说⼀下redis中5种数据类型的底层数据结构
前⾔:
阅读 redis设计与实现 ⼀书的记录。未完待续。。。
redis我们都知道有5种数据类型,分别是string,list,hash,set,zset,那么你知道它们的底层数据结构实现吗?
redis底层有6种数据结构,分别是简单动态字符串(SDS),链表,字典,跳跃表,整数集合,压缩列表。
每种数据类型都有着2种以上的数据结构实现,在不同状态下会进⾏数据结构的转换。现在来看看这6种数据结构是什么吧!
1.简单动态字符串(SDS)
2.链表
redis支持的数据结构
3.字典
其中渐进式hash能有效解决重新分配hash表带来的服务器停顿问题,不⼀次性把所有的数据迁移到新
的hash表上,⽽是每次增加,删除,修改后把⼀个index上的所有数据移动到新hash表中。
过程如下:
4.跳跃表
每个节点的⽣成都会随机产⽣1到32个层,来给前⾯的节点来”跳跃“
5.整数集合
当编码⽅式不⾜以应对过⼤的整数时,会调整编码⽅式,把在整数集合⾥的数的编码调整为新的编码⽅式,再把需要加⼊的⼤整数加⼊进来。编码⽅式只能升级不能降级。
6.压缩列表
压缩链表由于保留了前⾯节点的长度和最后节点的位置,能够有效的向后遍历,但不⾜之处就是调整了⼀个节点的⼤⼩可能会形成⽺效应,因为节点保留了前⾯节点的长度,⼤⼩改变时,后⾯节点需要做出相应调整。
第⼆部分,各个数据类型的数据结构
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论