Redis 底层数据结构
创始人
2025-01-15 13:33:38
0次

    •    简单动态字符串

    •    链表

    •    字典

    •    跳跃表

    •    整数集合

    •    压缩列表

    •    对象

SDS

增加了len和free属性,记录buf数组的使用空间和剩余空间。好处:strken函数直接读取len值,时间复杂度是O(1);预分配buf长度,避免频繁申请内存空间。分配规则,每次申请的free和len一样,最大额外申请1MB空间。

链表

由list和listNode两个数据结构组成。list记录了head、tail和len,表示链头、链尾和长度。listNode是一个双端节点,包含prev、next和value。

字典

由字典、哈希表、哈希表节点组成。字典记录了元素类型、两个哈希表和rehash标识。哈希表记录了节点数组、数组长度、节点数量。哈希表节点记录了key、value和next指针。value是一个复合结构,可以是指针或者整型数字。

哈希表扩缩容是通过rehash实现。开始rehash时,字典表启用另一个哈希表,容量是原来的两倍。再将原来的数据rehash过去。

为了避免一次性迁移太多数据,通过渐渐式hash。在key被更新、删除、查询的时候才做rehash。直到所有key都迁移完成,再把老的哈希表清空。

Rehash触发的条件,在非bgsave或bgrewriteaof时,容量因子大于1就开始执行。在bgsave或bgrewriteaof期间,容量因子要大于5才开始执行。避免期间rehash产生额外的内存,影响子进程的效率。

跳跃表

是有序集合的底层实现之一,由跳跃表和跳跃表节点组成。跳跃表包含头节点、尾节点和链表长度属性。跳跃表节点包含层级数组(跨度、前进指针)、后退指针、分数和obj组成。

节点排序规则是按分数从小到大排列,分数相同按照obj的字典顺序排列。

跳跃表和平衡数的区别是,跳跃表查询复杂度平均跟平衡树一样是logn,最差是n²,但是它的实现很简单。

整数集合

是集合的底层实现之一,当集合里只包含整数时,会使用这个结构。包含编码类型、长度和元素数组组成。编码类型包括int16、int32、int64,元素数组里的类型和编码类型相同。

当新元素比元素数组里存放的类型比大时,会进行类型升级,重新分配空间和排序。升级的好处是能节约空间,并且可以灵活存放不同类型的数据。只会升级不会降级。

压缩列表

是列表和哈希表底层的实现之一,当只包含数字和短的字符串时,使用这个结构。由压缩列表和节点构成。压缩链表包含字节大小、尾指针偏移量、节点个数、节点列表、结束标识。压缩节点包含上个节点的长度、编码类型和节点值。

上个节点的长度是动态的,分为1字节和5字节。上个节点的字节长度大于254时,升级到5字节。

对象

包含字符串、列表、哈希、集合和有序集合五种对象类型。

字符串由int、embstr和raw构成,占用空间从小到大,

列表由压缩列表和链表组成,元素少的时候用压缩列表。空间紧凑,节约内存。

哈希由压缩列表和字典组成,使用压缩列表主要也是省空间。

集合由整型数组和哈希组成。元素少的时候,就用整型数组,空间利用率高。

有序集合由压缩列表和跳表加字典的组成。跳表时候范围查询,字典适合单值查询。

 

相关内容

热门资讯

每日必看!江岸多玩到底能开挂吗... 每日必看!江岸多玩到底能开挂吗(辅助挂),江岸多玩原来真的有辅助挂讲义1、江岸多玩脚本辅助下载、江岸...
玩家交流!颖河竞技怎么开挂(外... 玩家交流!颖河竞技怎么开挂(外挂),颖河竞技好像是有外挂教材一、颖河竞技游戏安装教程牌型概率发牌机制...
最新通报!皮皮四川麻将软件下载... 最新通报!皮皮四川麻将软件下载(辅助挂),皮皮四川麻将果然有辅助挂模块1、操作简单,无需皮皮四川麻将...
一分钟揭秘!52游戏开挂脚本(... 一分钟揭秘!52游戏开挂脚本(透视挂),52游戏切实有透视挂法子52游戏脚本下载中分为三种模型:52...
一分钟快速了解!堆堆乐开挂破解... 一分钟快速了解!堆堆乐开挂破解(外挂),堆堆乐竟然真的有外挂方针1、下载好堆堆乐正确养号方法之后点击...
重大通报!汇城贵州麻将开挂脚本... 重大通报!汇城贵州麻将开挂脚本(开挂),汇城贵州麻将原来真的有开挂法门1、重大通报!汇城贵州麻将开挂...
盘点一款!七色城透视挂件(外挂... 盘点一款!七色城透视挂件(外挂),七色城切实是真的有外挂经验1、全新机制【七色城ai辅助工具激活码】...
今日头条!多多休闲透视软件下载... 今日头条!多多休闲透视软件下载(外挂),多多休闲确实是真的有外挂攻略1、首先打开多多休闲辅助器下载最...
关于!钱柜麻将真的有透视吗(辅... 关于!钱柜麻将真的有透视吗(辅助器),钱柜麻将一贯是有辅助器练习钱柜麻将能透视中分为三种模型:钱柜麻...
今日焦点!河北家乡棋牌辅助工具... 今日焦点!河北家乡棋牌辅助工具(外挂),河北家乡棋牌果然是有外挂手册小薇(辅助器软件下载)致您一封信...