redis-list扩展命令

一.list元素数量

llen key:返回指定的key关联的链表中的元素的数量

当前链表为

a b c d

这里写图片描述

二.效率低下的一些操作(了解)

以下操作就是些效率低下的命令,都会在执行命令前为元素赋索引,所以到万不得已的时候才会使用

1.删除某种元素

lrem key count value:删除count个值为value的元素,如果count大于0,从头向尾遍历并删除count个值为value的元素,如果count小于0,则从尾向头遍历并删除。如果count等于0,则删除链表中所有等于value的元素

此时我们可以先建一个链表如下:

a b c a b c a b //链表名为list1
a.删除链表中所有的a元素
lrem list1 0 a

这里写图片描述

b.删除链表中两个b,删除顺序是从头到尾删除
lrem list1 2 b

这里写图片描述

2.通过索引替换元素

lset key index value:设置链表中的index的脚标的元素值,0代表链表的头元素,-1代表链表的尾元素。操作链表的脚标不存在则抛出异常

我们先把list1重新设置为


a b c a b c a b
a.想把下标为2的元素进行替换,即c换成aaaaa
lset list1 2 aaaaa

这里写图片描述

3.在索引前/后插入元素

linsert key before | after pivot value:在pivot元素前或者后插入value这个元素

此时list1链表的数据如下

a b aaaaa a b c a b
a.在下标为2的元素前,插入元素ccccc
linsert key before aaaaa ccccc
b.在aaaaa之后插入元素bbbbb
 linsert list1 before aaaaa ccccc

这里写图片描述

三.对队列的操作

对于链表,我们一般都会其进行如下两种操作

  • 做大数据集合增删
  • 任务队列操作(链表的操作)
rpoplpush resource destination:将链表中的尾部元素弹出并添加到头部

1.两队排列

我们先把list1重新变为

a b c d
rpoplpush list1 list2 //执行这个命令前list2是不存在的

执行之后

key        value
list1       a b c
list2       d

再执行一次就变成

key        value
list1       a b
list2       c d

2.循环列表

我们先把list1重新变为

a b c d

执行这个就变成

rpoplpush list1 list1

这里写图片描述

简单来说就是一个链表循环,尾部结束到头部来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值