Redis五大基本数据类型List练习笔记

List

在redis中list可以是很多种形态比如:栈,队列,阻塞队列

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

#lpush rpush 好比双端队列
127.0.0.1:6379> lpush list one #这就好比从左往右放,先放进去的在左后
(integer) 1
127.0.0.1:6379> lpush list two
(integer) 2
127.0.0.1:6379> lpush list three
(integer) 3
127.0.0.1:6379> lrange list 0 -1
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> lrange list 0 1
1) "three"
2) "two"
127.0.0.1:6379> rpush list 4 #从右往左放自然4被放到了最后
(integer) 4
127.0.0.1:6379> lrange list 0 -1
1) "three"
2) "two"
3) "one"
4) "4"
#######################################################################
# lpop移除第一个 rpop移除最后一个 lindex根据下表获取值 llen获取list长度
127.0.0.1:6379> lpop list
"three"
127.0.0.1:6379> rpop list
"4"
127.0.0.1:6379> lrange list 0 -1
1) "two"
2) "one"
127.0.0.1:6379> lindex list 1
"one"
127.0.0.1:6379> lindex list 2
(nil)
127.0.0.1:6379> lindex list -1
"one"
127.0.0.1:6379> lpush list one
(integer) 1
127.0.0.1:6379> lpush list two
(integer) 2
127.0.0.1:6379> lpush list three
(integer) 3
127.0.0.1:6379> llen list
(integer) 3
#######################################################################
# lrem
127.0.0.1:6379> lrange list 0 -1
1) "three"
2) "three"
3) "two"
4) "one"
127.0.0.1:6379> lrem list 1 one #移除一个
(integer) 1
127.0.0.1:6379> lrem list 1 one
(integer) 0
127.0.0.1:6379> lrem list 2 three #移除2个
(integer) 2
127.0.0.1:6379> lrange list 0 -1
1) "two"
#######################################################################
#ltrim修剪截断list
127.0.0.1:6379> lpush list 1
(integer) 1
127.0.0.1:6379> lpush list 2
(integer) 2
127.0.0.1:6379> lpush list 3
(integer) 3
127.0.0.1:6379> lpush list 4
(integer) 4
127.0.0.1:6379> lrange list 0 -1
1) "4"
2) "3"
3) "2"
4) "1"
127.0.0.1:6379> ltrim list 1 2 #通过标截取指定片段
OK
127.0.0.1:6379> lrange list 0 -1
1) "3"
2) "2"
#######################################################################
#rpoplpush移除当前集合最后一个元素并将它添加到另一个集合
127.0.0.1:6379> lrange list 0 -1
1) "4"
2) "3"
3) "2"
4) "1"
127.0.0.1:6379> rpoplpush list list2
"1"
127.0.0.1:6379> lrange list 0 -1
1) "4"
2) "3"
3) "2"
127.0.0.1:6379> lrange list2 0 -1
1) "1"
127.0.0.1:6379> 
#######################################################################
# lset 可以给指定下标赋值,如果不存在是无法设置进去的
127.0.0.1:6379> EXISTS list
(integer) 0
127.0.0.1:6379> lset list 1 2
(error) ERR no such key
127.0.0.1:6379> lpush list 0
(integer) 1
127.0.0.1:6379> lpush list 1
(integer) 2
127.0.0.1:6379> lset list 0 -1
OK
127.0.0.1:6379> lrange list 0 -1
1) "-1"
2) "0"
127.0.0.1:6379> lrange list 0 0
1) "-1"
#######################################################################
#linsert 在指定元素前或者后插入元素
127.0.0.1:6379> lrange list 0 -1
1) "4"
2) "3"
3) "2"
4) "1"
127.0.0.1:6379> linsert list before 2 demo
(integer) 5
127.0.0.1:6379> lrange list 0 -1
1) "4"
2) "3"
3) "demo"
4) "2"
5) "1"
127.0.0.1:6379> linsert list after 2 test
(integer) 6
127.0.0.1:6379> lrange list 0 -1
1) "4"
2) "3"
3) "demo"
4) "2"
5) "test"
6) "1"
127.0.0.1:6379> 

小结:

  • list实际是一个链表,before Node After,Lift,Right都可以插入值

  • 如果key不存在,就新建链表

  • 如果key存在,新增内容

  • 如果移除了所有值,list也就不存在了

  • 相对来说在两边插入或者改动值效率相对比较高,中间的话效率相对低一点

  • 消息排队 消息队列lpush rpop(左边进去右边出来),栈lpush lpop(左边进去左边出来)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小小徐404

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

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

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

打赏作者

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

抵扣说明:

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

余额充值