四、【Redis】 List类型操作

目录

 

一、插入

二、查看列表元素 / 长度

三、删除 list 中的数据

四、截取/获取

五、从一个 list 中弹出 ,插入到另一个 list 中

六、设置时间等待有value出现


Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

一个列表最多可以包含 2^{32} - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

一、插入

1.向List中插入value

     1)从左边插入

lpush mylist a

     2)从右边插入 


rpush mylist b

2.插入 value 在 pivot 前/后

linsert  mylist  [before|after]  pivot  value

有多个 pivot 时,在第一个处插入后就结束了

127.0.0.1:6379> rpush mylist 1 2  4 6
(integer) 4
127.0.0.1:6379> lrange mylist 0 3
1) "1"
2) "2"
3) "4"
4) "6"
127.0.0.1:6379> linsert mylist before 4 3
(integer) 5
127.0.0.1:6379> lrange mylist 0 4
1) "1"
2) "2"
3) "3"
4) "4"
5) "6"

二、查看列表元素 / 长度

3.查看 List 中的某一个 key 为 mylist 的 value

lrange mylist  start  end

执行以下代码进行插入:

127.0.0.1:6379> lpush mylist a
(integer) 1
127.0.0.1:6379> rpush mylist b
(integer) 2
127.0.0.1:6379> rpush mylist c d e
(integer) 5
127.0.0.1:6379> lpush mylist 0 1 2
(integer) 8

查看key 为 mylist 的 value ,从左到右和从右到左俩种方法都可以

(integer) 8
127.0.0.1:6379> lrange mylist 0 7
1) "2"
2) "1"
3) "0"
4) "a"
5) "b"
6) "c"
7) "d"
8) "e"
127.0.0.1:6379> lrange mylist -8 -1
1) "2"
2) "1"
3) "0"
4) "a"
5) "b"
6) "c"
7) "d"
8) "e"

如果查找范围大于实际长度会返回什么呢?

已知 mylist 中有 8 个元素,那么我查找从 0 - 10 :

127.0.0.1:6379> lrange mylist 0 10
1) "2"
2) "1"
3) "0"
4) "a"
5) "b"
6) "c"
7) "d"
8) "e"

根据以上我们发现返回的还是 mylist 中实际存在的数据。

4.查看列表的长度

llen mylist

(error) ERR unknown command 'lrenge'
127.0.0.1:6379> lrange mylist 0 5
1) "a"
2) "a"
3) "a"
4) "b"
127.0.0.1:6379> llen mylist
(integer) 4

三、删除 list 中的数据

5.弹出列表左边或右边的value

rpop  mylist         弹出列表右边

lpop  mylist         弹出列表左边

代码示例:

127.0.0.1:6379> rpop mylist
"e"
127.0.0.1:6379> lpop mylist
"2"
127.0.0.1:6379> lrange mylist 0 8
1) "1"
2) "0"
3) "a"
4) "b"
5) "c"
6) "d"

6.删除某value

lrem  key  count  value

count 表示删除的数量,value 表示要删除的值,也就是删除 count 个 value 

代码示例:

127.0.0.1:6379> lpush mylist d c b a a a b b
(integer) 8
127.0.0.1:6379> lrange mylist 0 7
1) "b"
2) "b"
3) "a"
4) "a"
5) "a"
6) "b"
7) "c"
8) "d"
127.0.0.1:6379> lrem mylist 2 b
(integer) 2
127.0.0.1:6379> lrange mylist 0 7
1) "a"
2) "a"
3) "a"
4) "b"
5) "c"
6) "d"

四、截取/获取

7.截取 list 

ltrim  key  start  end 

代码示例:

(integer) 2
127.0.0.1:6379> lrange mylist 0 7
1) "a"
2) "a"
3) "a"
4) "b"
5) "c"
6) "d"
127.0.0.1:6379> ltrim mylist 0 3
OK
127.0.0.1:6379> lrange mylist 0 5
1) "a"
2) "a"
3) "a"
4) "b"

8.获取某一索引处的value

lindex  key  index

代码示例:

OK
127.0.0.1:6379> lrange mylist 0 5
1) "a"
2) "a"
3) "a"
4) "b"
127.0.0.1:6379> lindex mylist 3
"b"

五、从一个 list 中弹出 ,插入到另一个 list 中

9.从一个 list 中弹出 ,插入到另一个 list 中

rpoplpush  source   destination

使用场景:

一个列表(list1)放执行的元素,一个列表(list2)存放执行过后的元素,当列表要执行时,将这个元素从list1弹出,执行完插入到存放元素的列表list2中

127.0.0.1:6379> rpush list1 1 2 3
(integer) 3
127.0.0.1:6379> rpush list2 a b c
(integer) 3
127.0.0.1:6379> rpoplpush list2 list1
"c"
127.0.0.1:6379> lrange list1 0 10
1) "c"
2) "1"
3) "2"
4) "3"
127.0.0.1:6379> lrange list2 0 10
1) "a"
2) "b"

六、设置时间等待有value出现

10.设置时间等待有value出现

brpop key timeout  //秒

lpush key  value

使用场景:

接收 发送 消息场景,接收方等待,发送方发消息后,接收方在timeout时间内立马收到

打开俩个命令行窗口,一个等待value出现,一个插入 value

窗口一

127.0.0.1:6379> brpop list 60

      ???等窗口二插入 11 后会出现以下变化

127.0.0.1:6379> brpop list 60
1) "list"
2) "11"
(7.83s)

窗口二

127.0.0.1:6379>  lpush list 11
(integer) 1

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值