Redis学习-3.3:List列表详解

存储List

1:ArrayList使用数组方式

2:使用LinkList双向连接方式

3:双向链表中增加数据

4:双向链表中删除数据

常用命令:

1:两端添加

lpush mylist a b c

向mylist左端添加a、b、c三个值

虽然说我们没有mylist但是系统会帮我们自动创建

blob.png

之后我们又向左侧添加了1、2、3

现在我们的list应该是  321cba

之后我们再向右侧添加

rpush mylist 7 8 9

blob.png

现在我们的list里的数据是321cba789

blob.png

2:查看列表

lrange mylist start end(end如果为-1则代表链表尾部的元素,-2则代表倒数第二个)

3:两端弹出

lpop mylist 弹出最左面的元素

rpop mylist 弹出最右面的元素

如果不存在返回nil

blob.png

弹出时返回的是被弹出的元素

如果list中的元素都被弹出则该list也会被系统清除

4:获取列表元素个数

llen mylist

blob.png

如果没有该list则返回长度0

5:拓展命令

lpushx mylist aaa 这个就是向list头部插入一个值,如果该list不存在,则不进行插入

rpushx mylist bbb相同道理

blob.png

我没有mylist3所以返回list长度为0


blob.png

lrem mylist count(这个是数字) value(值)

删除mylist中值为value的数据count个

如果

count>0,从前往后遍历删除count个

count<0,从后面向前面遍历删除-count个

count=0,删除所有value的值

blob.png

我们从头到尾删除两个 a

lrem mylist 2 a

blob.png

之后我们发现5) 6)没了

之后我们在从尾到头删除2个a

lrem mylist -2 a

这时应该18) 14)位置的a消失,我们试验下

blob.png

这时我们要删除所有的a

lrem mylist 0 a


blob.png

成功

我们可以操作链表的角标

在某一个位置添加元素 lset mylist 3 wsy

在3的位置上添加wsy(和java一样,角标从0开始)

blob.png

linsert mylist4 before b 11

在值b之前插入11

linsert mylist4 after b 11

在值b之后插入11

blob.png

(不要理会那个rinert - -!)

rpoplpush mylist4 mylist:将链表mylist4中尾部数据弹出,再添加在mylist链表头部

blob.png

blob.png

这个命令个可以进行消息队列的处理

blob.png

猜你喜欢

转载自blog.csdn.net/qq_22570497/article/details/78474887