Redis存储Lists类型

lists的底层存储图,是一个链表
如上图所示:我们的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:将链表中的尾部元素弹出并添加到头部

猜你喜欢

转载自blog.csdn.net/qq_38054319/article/details/86142124
今日推荐