一.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
简单来说就是一个链表循环,尾部结束到头部来