news 2026/5/30 17:09:39

4.常用数据结构和单线程模型理解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
4.常用数据结构和单线程模型理解

Redis目前10种value类型,string,list,set,hash,sorted set,stream,geospatial,hyperloglog,bitmaps,bitfields。

redis针对数据结构底层实现的特化

在源码层面,redis对数据结构实现与常见实现方式有差异,目的是为了节省内存/提高效率。它依旧保证容器的特性不变,只不过实现有差异(数据结构形不变,编码方式变)。

1.常见数据结构及其内部编码

string:
raw:最基本的字符串,底层实现持有一个char数组。

int:8字节整型存储(可用来实现计数功能)

embstr:针对短字符串的特殊优化(只读字符串,进行修改了编码变为raw

hash:

hashtable:最基本的哈希表

ziplist:当哈希表内元素个数比较少,节省内存

为什么要压缩?

redis上有很多key,可能某些key的value是hash,hash本身是很浪费内存的(有空位置),在数据量不大时,使用ziplist可以在不影响效率的情况下节省内存。

list:

linkedlist:传统链表

ziplist:压缩列表

自redis3.2之后,引入了quicklist,兼顾了上述两者的优点。

set:

hashtable

intset:集合中存的都是整数(升序存放数字,查找时二分查找

zset:

skiplist:跳表(5.跳表(skiplist)_跳表(skiplist) + 哈希表-CSDN博客)

ziplist

查看编码命令:object encoding key

不需要记住数字,只记思想;因为数字是可配置的,为什么用这个数字才是重要的。

2.redis单线程模型理解

redis只使用一个线程处理所有的命令;不是说redis服务器内部就只有一个线程;redis6.0及以上,网络IO是多线程的。

2.1 命令处理没有线程安全问题

两个客户端即便同时请求redis服务器,但因为redis处理命令是单线程的;两个命令一定是串行执行的,没有线程安全问题。

2.2 命令处理用单线程原因和弊端

redis核心业务逻辑都是短平快的,不是很吃CPU资源。

弊端:redis命令操作过长会阻塞其他命令的执行。

2.3 redis单线程模型为什么效率高?(面试题)

核心:参照物是数据库(MySQL,Oracle,sql server等)

1)内存访问速度比访问硬盘快

2)核心功能比数据库更简单(数据库增删改查都有权限概念,复杂很多)

3)单线程模型,避免了一些不必要的线程竞争
4)网络采用的是IO多路复用技术(epoll,有大量socket但只有少部分活跃)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/28 14:09:13

多角度关于人的本质的论述,你怎么思考?

第六章:多角度关于人的本质的论述人的本质,人和动物的区别是什么,此文可以参考。这个问题很深奥,历来人类试图回答。比如中国古代对于人,有善恶之分,但这显然不具有说服力。以下是马克思哲学关于人本质的思…

作者头像 李华
网站建设 2026/5/28 12:30:12

Flutter 实现一个容器内部元素可平移、缩放和旋转等功能(六)

Flutter 实现一个容器内部元素可平移、缩放和旋转等功能(六) Flutter: 3.35.6 前面有人提到在元素内部的那块判断怎么那么写的,看来对知识渴望的小伙伴还是有,这样挺好的。不至于说牢记部分知识,只需要大致了解一下有…

作者头像 李华
网站建设 2026/5/28 12:30:11

python作业4

a 56 b -18# 1. 按位与(&):对应位都为1则为1,否则为0 # 56: 00111000 # -18补码: 11101110 # 按位与: 00101000 → 十进制40 bit_and a & b print(f"按位与(&): {a} & {b} {bit_and}")# 2. 按位或(|):对应位有…

作者头像 李华
网站建设 2026/5/29 2:01:18

今天教大家免费使用先进的AI大模型,非常详细收藏这一篇就够了

为什么要使用ai模型? 用好ai可以解决你想做的事情比如数据录入、数据整理、数据分析、数据报告等等问题。只要你想好规则,他都可以给你生成,而且你要担心数据泄露问题,完全可以让他给你生成一个离线的app或者exe程序或者前端程序&…

作者头像 李华
网站建设 2026/5/28 12:30:11

边缘AI与端云协同架构

边缘AI与端云协同架构概述 边缘AI将人工智能模型部署在边缘设备(如手机、传感器、嵌入式设备)上,实现本地实时处理;端云协同通过边缘与云计算的协作,平衡计算负载、隐私与延迟。典型应用包括智能家居、工业检测、自动驾…

作者头像 李华
网站建设 2026/5/29 19:13:54

掌握这六点轻松入门LangGraph1.0,非常详细

越来越多的人开始使用LangGraph搭建可控、可观测、可插拔的AI工作流。无论是智能客服、多步骤智能体,还是自动化运维机器人、AI建站系统,它都能游刃有余地实现。 然而,许多开发者在初次接触LangGraph时,往往会感到无从下手&#x…

作者头像 李华