Redis之List类型

在list里面,我们可以把list当成,栈、队列、阻塞队列!
所有命令以l开头

LPUSH:#将一个或这多个值插入头部(左)
LPUSH:#将一个或这多个值插入尾部(右)


127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> lpush lsit 1  #将一个或这多个值插入头部
(integer) 1
127.0.0.1:6379> lpush lsit 2
(integer) 2
127.0.0.1:6379> lpush lsit 3
(integer) 3
127.0.0.1:6379> lrange list 0 -1 #获取list的值
(empty array)
127.0.0.1:6379> keys *
1) "lsit"
127.0.0.1:6379> lrange lsit 0 -1
1) "3"
2) "2"
3) "1"
127.0.0.1:6379> lrange lsit 0 1  #通过区间获取具体的值
1) "3"
2) "2"
127.0.0.1:6379> rpush lsit 4
(integer) 4
127.0.0.1:6379> lrange lsit 0 -1
1) "3"
2) "2"
3) "1"
4) "4"
127.0.0.1:6379> 

LPOP :移除list的第一个元素
RPOP :移除list的最后一个元素

127.0.0.1:6379> LPOP lsit
"3"
127.0.0.1:6379> 
127.0.0.1:6379> RPOP lsit
"4"
127.0.0.1:6379> lrange lsit 0 -1
1) "2"
2) "1"
127.0.0.1:6379> 

LINDEX:通过下标获取list的某一个值

127.0.0.1:6379> lindex lsit 1
"1"
127.0.0.1:6379> lindex lsit 0
"2"
127.0.0.1:6379> 

LLEN:返回列表的长度

127.0.0.1:6379> llen lsit
(integer) 2
127.0.0.1:6379> 

LREM:移除指定的值!

127.0.0.1:6379> LREM lsit 1 1 #移除list集合中指定个数的value;精确匹配
(integer) 1
127.0.0.1:6379> lpush lsit 1
(integer) 2
127.0.0.1:6379> lpush lsit 1
(integer) 3
127.0.0.1:6379> LRANGE lsit 0 -1
1) "1"
2) "1"
3) "2"
127.0.0.1:6379> LREM lsit 2 1
(integer) 2
127.0.0.1:6379> LRANGE lsit 0 -1
1) "2"
127.0.0.1:6379> 

TRIM:通过下标截取指定长度,这个list已经被改变了,只剩下截取的元素了

127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> RPUSH list "one"
(integer) 1
127.0.0.1:6379> RPUSH list "two"
(integer) 2
127.0.0.1:6379> RPUSH list "three"
(integer) 3
127.0.0.1:6379> RPUSH list "four"
(integer) 4
127.0.0.1:6379> LTRIM list 1 3
OK
127.0.0.1:6379> LRANGE list 0 -1
1) "two"
2) "three"
3) "four"
127.0.0.1:6379> 
rpoplpush :移除列表的最后一个元素,添加到另外一个列表
127.0.0.1:6379> RPUSH mylist "welcome"
(integer) 1
127.0.0.1:6379> RPUSH mylist "chongqing"
(integer) 2
127.0.0.1:6379> rpoplpush mylist otherlist #移除列表的最后一个元素,添加到另外一个列表
"chongqing"
127.0.0.1:6379> 
127.0.0.1:6379> LRANGE mylist 0 -1 #查看原来的列表
1) "welcome"
127.0.0.1:6379> LRANGE otherlist 0 -1 #查看目标的列表
1) "chongqing"

LSET :将列表中指定下标的值替换为另一个值,更新操作

LINSERT:将某个具体的value插入到列表中,某个元素的前面或者后面。

127.0.0.1:6379> RPUSH mylist "welcome"
(integer) 1
127.0.0.1:6379> RPUSH mylist "chongqing"
(integer) 2
127.0.0.1:6379> LRANGE mylist 0 -1
1) "welcome"
2) "chongqing"
127.0.0.1:6379> LRANGE mylist 0 -1
1) "welcome"
2) "chongqing"
127.0.0.1:6379> LINSERT mylist after "welcome" "to"
(integer) 3
127.0.0.1:6379> LRANGE mylist 0 -1
1) "welcome"
2) "to"
3) "chongqing"
127.0.0.1:6379> 

小结:

  • 实际是一个链表,before Node after ,left ,right 都可以插入值
  • 如果key不存在,创建新的链表
  • 如果key存在,创建新的内容
  • 如果移除所有值,空链表,也代表不存在!
  • 两边插入或者改动值,效率最高,中间元素,相对效率会低一点
  • 消息队列,消息排队(Lpush Rpop),栈(Lpush Lpop)!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

上官浩炀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值