Redis-3.0.503 List类型操作-03

1.List类型

1.1 List类型是Redis中,一种单键多值类型,是简单的字符串列表。按照插入顺序排序。

它底层实际是个双向链表,对两端的操作性很高,可以添加一个元素到列表的头部(左边)或者是尾部(右边),通过索引下标的操作中间节点性能较差

首先在列表元素比较少的情况下会使用一块连续的内存存储,这个结构是zipList,也就是压缩列表。

因为双向链表占用的内存比压缩列表要多, 所以当创建新的列表键时, 列表会优先考虑使用压缩列表, 并且在有需要的时候, 才从压缩列表实现转换到双向链表实现。

压缩列表转化成双向链表:

创建新列表时 redis 默认使用 redis_encoding_ziplist 编码, 当以下任意一个条件被满足时, 列表会被转换成redis_encoding_linkedlist 编码:

单字符串的值长度超过 server.list_max_ziplist_value (默认值为 64 )。
ziplist 包含的节点超过 server.list_max_ziplist_entries (默认值为 512 )。

这两个条件是可以修改的,在 redis.conf 中:

list-max-ziplist-value 64
list-max-ziplist-entries 512

在3.2之后,ziplist被quicklist替代

2.List类型常用命令

lpush/rpush 从左边或右边插入一个或者多个值

lpop/rpop 从左边或右边弹出一个值

lrange 按照索引下标获得元素(从左到右),0 -1 表示获取从0到最后的所有值

lindex 按照索引下标获取元素(从左到右)

llen 获取列表长度

linsert key before/after value newValue 在指定值前或者值后插入新数据

lrem key n value 从左边删除n个指定值(从左到右)

lset key index value 将列表key下标为index的值替换成value

posted @ 2022-08-04 20:28  别停  阅读(44)  评论(0)    收藏  举报