标签:列表 str trie 并且 pre 指定元素 pivot 字符 长度
列表类型用来存储多个有序的字符串,可以从两端进行插入(push)和弹出(pop)操作,获取指定范围的元素列表,获取指定索引的元素等
lpush:从左边插入元素
lpush key value1 value2 ...
rpush:从右边插入元素
rpush key value1 value2 ...
linsert:在某个元素前或后插入元素,返回列表长度
linsert key before|after pivot value
在d元素前添加e元素
127.0.0.1:6379[2]> rpush list a b c d
(integer) 4
127.0.0.1:6379[2]> linsert list before d e
(integer) 5
127.0.0.1:6379[2]> lrange list 0 -1
1) "a"
2) "b"
3) "c"
4) "e"
5) "d"
lrange:获取指定范围的元素列表
索引从0开始,最后一个元素的索引为-1
lrange key start end
获取全部元素:
lrange key 0 -1
lindex:获取指定索引下标的元素
lindex key index
获取最后一个元素:
lindex key -1
llen:获取列表长度
llen key
lpop:从左侧弹出元素(删除并返回)
lpop key
127.0.0.1:6379[2]> lrange list 0 -1
1) "a"
2) "b"
3) "c"
4) "e"
5) "d"
127.0.0.1:6379[2]> lpop list
"a"
127.0.0.1:6379[2]> lrange list 0 -1
1) "b"
2) "c"
3) "e"
4) "d"
rpop:从右侧弹出元素(删除并返回)
rpop key
lrem:删除指定元素
lrem key count value
lrem会从列表中找到value元素进行删除,根据count分为三种情况:
count
个元素。count
绝对值 个元素。除了lpop和rpop两个弹出命令外,还有两个弹出命令,叫做阻塞弹出,分别是blpop
和brpop
blpop:规定时间内获取并移除数据,timeout:单位为秒
blpop key timeout
如果列表不为空,就立刻返回列表和弹出的元素
127.0.0.1:6379[2]> blpop list 10
"list"
"a"
如果列表为空,就阻塞timeout长时间,如果指定时间内其他客户端没有添加元素就返回nil,如果指定时间内其他客户端添加了元素 ,就返回列表和弹出的元素
127.0.0.1:6379[2]> blpop list 10
(nil)
(10.05s)
lset:修改指定索引下标的元素
lset key index newValue
修改列表索引为0的元素为b:
127.0.0.1:6379[2]> lrange list 0 -1
1) "c"
2) "f"
3) "e"
127.0.0.1:6379[2]> lset list 0 b
OK
127.0.0.1:6379[2]> lrange list 0 -1
1) "b"
2) "f"
3) "e"
列表类型内部有2种编码:
list-max-ziplist-entries
配置(默认 512
个)并且每个元素的值都小于list-max-ziplist-value
配置时(默认 64
字节),Redis就会采用ziplist来减少内存的使用ziplist
的条件时, Redis
会使用 linkedlist
作为 列表 的 内部实现。可以使用object encoding key
查看当前编码
当元素小于521个,且元素值小于64字节
127.0.0.1:6379> rpush listkey e1 e2 e3
(integer) 3
127.0.0.1:6379> object encoding listkey
"ziplist"
当元素大于521个
27.0.0.1:6379> rpush listkey e4 e5 ... e512 e513
(integer) 513
127.0.0.1:6379> object encoding listkey
"linkedlist"
Redis3.2
版本提供了 quicklist
内部编码,简单地说它是以一个 ziplist
为 节点 的 linkedlist
,它结合了 ziplist
和 linkedlist
两者的优势,为 列表类型 提供了一种更为优秀的 内部编码 实现
通过
lpush
和brpop
可以实现消息队列,生产方通过lpush添加元素,多个消费方通过brpop获取元素
通过
lpush
和lpop
可以实现栈
通过
lrange
可以实现列表的分页功能
标签:列表 str trie 并且 pre 指定元素 pivot 字符 长度
原文地址:https://www.cnblogs.com/dingjn/p/12864685.html