3.30--Redis之常用数据结构--listpack(总结篇)------加油呀
Posted 奔赴在自己的热爱中
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3.30--Redis之常用数据结构--listpack(总结篇)------加油呀相关的知识,希望对你有一定的参考价值。
quicklistNode 还是用了压缩列表来保存元素,压缩列表连锁更新的问题,来源于它的结构设计,所以要想彻底解决这个问题,需要设计一个新的数据结构。
listpack,目的是替代压缩列表,它最大特点是 listpack 中每个节点不再包含前一个节点的长度了,压缩列表每个节点正因为需要保存前一个节点的长度字段,就会有连锁更新的隐患。
listpack 结构
istpack entry 是 listpack 的节点
每个 listpack 节点结构如下:
主要包含三个方面内容:
1.encoding,定义该元素的编码类型,会对不同长度的整数和字符串进行编码;
2.data,实际存放的数据;
3.len,encoding+data的总长度
listpack 没有压缩列表中记录前一个节点长度的字段了,listpack 只记录当前节点的长度,当我们向 listpack 加入一个新元素的时候,不会影响其他节点的长度字段的变化,从而避免了压缩列表的连锁更新问题。
Redis===》数据类型之列表有序无序,常用命令,RDBAOFRDB+AOF
Redis===》数据类型之列表、有序、无序,常用命令,RDB、AOF、RDB+AOF
一、redis数据类型
1.列表
redis列表就是redis的字符串类型的集合,按照插入顺序排序
#1.从左边插入数据(后进先出)
127.0.0.1:6379> lpush peopel yyy
(integer) 1
127.0.0.1:6379> lrange peopel 0 -1
1) "yyy"
127.0.0.1:6379> lpush peopel yyy man shanghai
(integer) 4
127.0.0.1:6379> lrange peopel 0 -1 #从头部插入
1) "shanghai"
2) "man"
3) "yyy"
4) "yyy"
#2.从右边插入数据(先进先出)
127.0.0.1:6379> rpush peopel abc
(integer) 5
127.0.0.1:6379> lrange peopel 0 -1
1) "shanghai"
2) "man"
3) "yyy"
4) "yyy"
5) "abc"
#3.查看看数据
127.0.0.1:6379> lrange peopel 0 -1 #从开始到结束
1) "shanghai"
2) "man"
3) "yyy"
4) "yyy"
5) "abc"
127.0.0.1:6379> lrange peopel 2 4 #从第二位到第四位
1) "
以上是关于3.30--Redis之常用数据结构--listpack(总结篇)------加油呀的主要内容,如果未能解决你的问题,请参考以下文章