Redis 基本类型之 List 类型

Redis 基本类型之 List 类型

基本指令

# 在 redis 里,list 是一个双向链表,可以用作栈,队列,阻塞队列

# PUSH
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 right # 将一个值或者多个值放入列表头部(从右边)
(integer) 4
127.0.0.1:6379> lrange list 0 -1
1) "three"
2) "two"
3) "one"
4) "right"

################################################################################################################

#LPOP(RPOP 亦相同,下省略)
127.0.0.1:6379> lpop list # 移除最左边的元素
"three"
127.0.0.1:6379> rpop list # 移除最右边的元素
"right"

################################################################################################################

#LINDEX
127.0.0.1:6379> lindex list 1 # 通过下标获取 list 的某一个值,若下标不存在,则返回 nil
"one"
127.0.0.1:6379> lindex list 0
"two"
127.0.0.1:6379> lindex list 2
(nil)

################################################################################################################

#LLEN
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> lpush list three
(integer) 4
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> lrange list 0 -1
1) "three"
2) "three"
3) "two"
127.0.0.1:6379> lrem list 2 three
(integer) 2
127.0.0.1:6379> lrange list 0 -1
1) "two"

################################################################################################################

#TRIM
127.0.0.1:6379> rpush mylist list0
(integer) 1
127.0.0.1:6379> rpush mylist list1
(integer) 2
127.0.0.1:6379> rpush mylist list2
(integer) 3
127.0.0.1:6379> rpush mylist list3
(integer) 4
127.0.0.1:6379> rpush mylist list4
(integer) 5
127.0.0.1:6379> ltrim mylist 1 3 # 将数组截断,闭区间[1,3],用改变原数组的方式。
OK
127.0.0.1:6379> lrange mylist 0 -1
1) "list1"
2) "list2"
3) "list3"

################################################################################################################

#RPOPLPUSH
127.0.0.1:6379> rpush mylist list0
(integer) 1
127.0.0.1:6379> rpush mylist list1
(integer) 2
127.0.0.1:6379> rpush mylist list2
(integer) 3
127.0.0.1:6379> rpush mylist list3
(integer) 4
127.0.0.1:6379> rpush mylist list4
(integer) 5
127.0.0.1:6379> rpoplpush mylist otherlist # 从源列表右侧弹出,并从左边 push 到另一个数组中,若数组不存在,则创建数组
"list4"
127.0.0.1:6379> rpoplpush mylist otherlist
"list3"
127.0.0.1:6379> lrange mylist 0 -1
1) "list0"
2) "list1"
3) "list2"
127.0.0.1:6379> lrange otherlist 0 -1
1) "list3"
2) "list4"

################################################################################################################

#LSET
127.0.0.1:6379> lset list 0 zero # 若列表不存在或下标不存在,则报错
(error) ERR no such key
127.0.0.1:6379> lpush list hello
(integer) 1
127.0.0.1:6379> lrange list 0 0
1) "hello"
127.0.0.1:6379> lset list 0 zero # 若列表以及下标存在,更新列表指定位置的值
OK
127.0.0.1:6379> lrange list 0 0
1) "zero"

################################################################################################################

#LINSERT
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> linsert list before two onepointfive # 将某一个具体的值插入到我们当前列表中某个元素的前面或者后面
(integer) 3
127.0.0.1:6379> linsert list after two twopointfive
(integer) 4
127.0.0.1:6379> linsert list after three four # 若列表或者指定元素不存在的话,返回 -1,代表插入失败
(integer) -1

小结

  1. Redis 中的 list 是一个双向链表,左边右边都可以插入删除值
  2. push 元素时,若列表不存在,则会新建列表
  3. 当列表中元素都被删除时,列表也就不存在
  4. 尽可能从左右两边操作列表而不是中间,这样效率会更高一些
  5. lpush rpop 的方式可以用作队列,lpush rpush 可以用作栈
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值