如上图所示:我们的key还是字符串,Value是一个链表类型
LInkedList链表的优势就是插入数据快,缺点呢就是查询速度相对于ArrayList要慢,ArrayList是用数组的方式存储的,所以根据索引查询速度快,而Linkedlist使用的是双向连接的方式存储
开始进入Code:
Lists的常用命令
在Redis中,List类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表 一样,我们可以在其头部(left)和尾部(right)添加新的元素。在插入时,如果该键并不存在,Redis将为该键创建一个新的链表。
两端添加:Ipush(I表示left)意思是在左边的链表开始插入
Ipush key value1 value2 ...
演示:
//这里我就插入了四条数据 插入成功,返回元素的个数。
Ipush mylist a b c d
那么问题来了,我们在list的left插入了四条数据,怎么看我们的数据呢
lrange key start end
:获取链表中从start到end的元素的值 start end从0开始计数,start、end也可为负数,若为-1则表示链表尾部的元素,-2则表示倒数第二个,依次类推…
I还表示left range表示范围 因为上面我们是从left开始插入的,所以查询也要从left查询
演示查询:
Irange mylist 0 -1
快速演示一下从right尾部插入的代码
rpush mylist 1 2 3
在查看一下所有插入的数据:
Irange mylist 0 -1
两端弹出(移除数据)代码:
lpop key:返回并弹出指定的key关联的链表中的第一个元素,即头部元素。
rpop key:从尾部弹出元素。
- 代码演示:
lpop mylist //查看Irange mylist 0 -1 你会发现首行的第一个数据被移除了
rpop mylist //查看Irange mylist 0 -1 你会发现尾行的第一个数据被移除了
- 功能获取列表中元素的个数代码演示:
llen key
//len 也就是length长度
lpushx key value
:仅当参数中指定的key存在时(如果与key管理的list中没 有值时,则该key是不存在的)在指定的key所关联的list的头部插入value。
这段代码的功能是在头部插入一个数据,x的功能就是如果你的key不存在就不会插入,你加上x必须要保证你后面的key要有,如果用Ipush key balue如果你没有key它会自动帮你创建一个新的key
rpushx key value
:在该list的尾部添加元素
- 删除数据代码
lrem key count value
:删除count个值为value的元素,如果count大于0,从头向尾遍历并删除count个值为value的元素,如果count小于0,则从尾向头遍历并删除。如果count等于0,则删除链表中所有等于value的元素。
代码演示:
Irem mylist 2 a
- 在指定的下标index插入数据: 当前的数据会被插入的数据所替换
lset key index value
:设置链表中的index的脚标的元素值,0代表链表的头元 素,-1代表链表的尾元素。
- 在指定的下标index位置插入数据,且不替换插入位置下的数据
linsert key after 下标位置的值 value
:在下标位置的值的后面插入一条数据
linsert key befor 下标位置的值 value
:在下标位置的值的前面插入一条数据
rpoplpush resource destination:将链表中的尾部元素弹出并添加到头部