Redis五大数据类型之 List 经常用到的命令

Redis五大数据类型之 List 经常用到的命令

在redis里面,list可以是栈、队列、阻塞队列
所有的list执行的命令都是用L开头的 如LPUSH、LRANGE

1.list 增加值(LPUSH、RPUSH)
localhost:2>LPUSH list left1  #插入list 从左侧插入(头部)
"1"
localhost:2>LPUSH list left2
"2"
localhost:2>LPUSH list left3
"3"
localhost:2>LRANGE list 0 -1  #通过区间获取具体的值
1) "left3"
2) "left2"
3) "left1"
localhost:2>LRANGE list 0 1
1) "left3"
2) "left2"
localhost:2>RPUSH list right1   #插入list 从右侧插入(尾部)
"4"
localhost:2>RPUSH list right2
"5"
localhost:2>RPUSH list right3
"6"
localhost:2>LRANGE list 0 -1
1) "left3"
2) "left2"
3) "left1"
4) "right1"
5) "right2"
6) "right3"
2.list 移除值(LPOP、RPOP)
localhost:2>LPOP list  #从左侧移除值 移除列表的第一个元素
"left3"
localhost:2>RPOP list  #从右侧移除值 移除列表的最后一个元素
"right3"
localhost:2>LRANGE list 0 -1
1) "left2"
2) "left1"
3) "right1"
4) "right2"
3.list 通过下标获取值(LINDEX)
localhost:2>Lindex list 1  #通过下标1 获取list中的第二个元素
"left1"
4.list 移除指定的值(LREM)
localhost:2>lrem list 1 left1  #移除list中一个指定的值 left1
"1"
localhost:2>lrange list 0 -1
1) "left3"
2) "left2"
3) "right1"
4) "right2"
5) "right2"
localhost:2>lrem list 2 right2  #移除list中两个指定的值 right2  
"2"
localhost:2>lrange list 0 -1
1) "left3"
2) "left2"
3) "right1"
5.list 截断(LTRIM)
localhost:2>lrange list 0 -1
1) "left3"
2) "left2"
3) "left1"
4) "left0"
localhost:2>ltrim list 1 2  #截取下标为 1和2的值
"OK"
localhost:2>lrange list 0 -1
1) "left2"
2) "left1"
6.将一个list中的元素截取并push到另外的list中去(RPOPLPUSH)
localhost:2>lrange list 0 -1
1) "left3"
2) "left2"
3) "left1"
localhost:2>rpoplpush list otherlist #移除列表的最后一个元素并push到新的列表中去
"left1"
localhost:2>lrange list 0 -1
1) "left3"
2) "left2"
localhost:2>lrange otherlist 0 -1
1) "left1"
7.list 更新值(LSET)
localhost:2>lpush list value1
"1"
localhost:2>lrange list 0 0
1) "value1"
# lset将列表中指定下标的值替换成另外一个值 更新操作
localhost:2>lset list 0 value2
"OK"
localhost:2>lrange list 0 0
1) "value2"
localhost:2>lset list 1 value3 #如果不存在这个下标 会报错
"ERR index out of range"
8.list 插入值(LINSERT)
localhost:2>RPUSH list "zhangsan"
"1"
localhost:2>RPUSH list "lisi"
"2"
localhost:2>LINSERT list before "lisi" "wangwu" #在字符串"lisi"之前插入"wangwu"
"3"
localhost:2>LRANGE list 0 -1
1) "zhangsan"
2) "wangwu"
3) "lisi"
localhost:2>LINSERT list after "lisi" "zhaoliu" #在字符串"lisi"之后插入"zhaoliu"
"4"
localhost:2>LRANGE list 0 -1
1) "zhangsan"
2) "wangwu"
3) "lisi"
4) "zhaoliu"

List(链表)小结:

  • list实际上是一个链表,before、afte、left、right都可以插入值
  • 如果key不存在,创建新的链表
  • 如果key存在,新增内容
  • 如果移除了所有值,空链表,也代表不存在
  • 在两边插入或者改动值,效率最高。中间元素,相对效率会低一些
  • 消息队列(LPUSH RPOP 左进右出),栈(LPUSH LPOP 左进左出)

我是听狂神的课并进行记录。狂神说的非常好,大家快去学狂神说Java

Guess you like

Origin blog.csdn.net/weixin_43484014/article/details/117368509