redis-list扩展命令

来源:互联网 发布:阿里云数据分析 编辑:程序博客网 时间:2024/05/18 09:48

一.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        valuelist1       a b clist2       d

再执行一次就变成

key        valuelist1       a blist2       c d

2.循环列表

我们先把list1重新变为

a b c d

执行这个就变成

rpoplpush list1 list1

这里写图片描述

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

原创粉丝点击