五大数据类型之List

52 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

List

image-20210224150735158.png 在redis里面,我们可以把list玩成栈,队列,阻塞队列.redis不区分大小写

所有的list命令都是用l开头的

LPUSH list one #将一个值或者多个值插入列表头部
LRANGE #
Rpush list right #向尾部添加
LPOP  移除第一个元素
RPOP  移除
Lindex list 1 通过下标获取值
Llen
################################
#移除指定的值
Lrem key count value
################################
rpoplpush #移除列表的最后一个元素并将它移动到新的列表中
#通过下标截取指定长度
ltrim mylist 1 2
################################
rpoplpush #移除列表的最后一个元素并将它移动到新的列表中
################################
EXISTS list 
#lset list 1 item 将列表中指定下标的值替换为另外一个值,相当于更新操作###############################
#linsert 往某一个key的前面或者后面插入一个值
​
​
​
​

测试代码

127.0.0.1:6379> lpush list1 one
(integer) 1
127.0.0.1:6379> lrange list1 0 -1
1) "one"
127.0.0.1:6379> lpush list1 two
(integer) 2
127.0.0.1:6379> lrange list 0 -1
(empty list or set)
127.0.0.1:6379> lrange list1 0 -1
1) "two"
2) "one"
127.0.0.1:6379> lpop list1
"two"
127.0.0.1:6379> lrange list1 0 -1
1) "one"
127.0.0.1:6379> rpush list1 three
(integer) 2
127.0.0.1:6379> lrange lsit1 0 -1
(empty list or set)
127.0.0.1:6379> lrange list1 0 -1
1) "one"
2) "three"
127.0.0.1:6379> lindex list 1
(nil)
127.0.0.1:6379> lindex list1 1
"three"
127.0.0.1:6379> llen list1
(integer) 2
127.0.0.1:6379> lpush one 
(error) ERR wrong number of arguments for 'lpush' command
127.0.0.1:6379> lpush list1 one
(integer) 3
127.0.0.1:6379> lpush list1 one
(integer) 4
127.0.0.1:6379> lrange
(error) ERR wrong number of arguments for 'lrange' command
127.0.0.1:6379> lrange 0 -1
(error) ERR wrong number of arguments for 'lrange' command
127.0.0.1:6379> lrange list1 0 -1
1) "one"
2) "one"
3) "one"
4) "three"
127.0.0.1:6379> lrem list 2 one
(integer) 0
127.0.0.1:6379> lrem list1 2 one
(integer) 2
127.0.0.1:6379> lrange list1 0 -1
1) "one"
2) "three"
127.0.0.1:6379>

小结

他实际上是一个链表,before Node after,left,right都可以插入值

如果key存在,心中内容

如果移除了所有值,空链表,也代表不存在

在两边插入或者改动值,效率最高,中元素效率会低

消息队列