Redis中List存储类型

在Redis中,List类型是按照插入的顺序排序的字符串链表。和数据结构中的普通链表一样,可以在其头部(left)和尾部(right)添加新的元素。在插入元素时,如果该键不存在,Redis将为该键创建一个新的链表。如果链表中所有的元素均被移除,那么该键也会从数据库中删除。
从元素的插入和删除效率的角度来看,我们从链表的两头进行插入或者删除,这将会是非常高效的操作,即使链表中已经存储了百万条记录,该操作也可以在常量时间内完成。然而,如果元素的插入和删除是作用于链表中间,将会是非常低效的。
List相关的命令:
(1)LPUSH key value [value…]:在指定Key所关联的List Value的头部插入参数中给出的所有Values。如果该key不存在,该命令将在插入之前创建一个与该key关联的空链表,之后再将数据从链表的头部插入。如果该键的value不是链表类型,该命令将返回错误信息。该命令返回插入后链表中元素的数量。
(2)LPUSHX key value:仅有当参数中指定的key存在时,该命令才会在其所关联的List Value的头部插入参数中给出的Value,否则不会有任何操作发生。该命令返回插入后链表中元素的数量。
(3)LRANGE key start stop:返回指定范围内元素的列表。
(4)LPOP key:返回并弹出指定key关联的链表中的第一个元素,即头部元素,如果该key不存在,返回nil。
(5)LLEN key:返回指定key关联的链表中元素的数量,如果key不存在,则返回0,如果与该key关联的value类型不是链表,则返回相关的错误信息。
(6)LREM key count value:在指定key关联的链表中,删除前count个值等于value的元素,如果count大于0,从头向尾遍历并删除,如果count小于0,则从尾向头遍历并删除。如果count等于0,则删除链表中所有等于value的元素,如果指定的key不存在,则直接返回0;该命令返回被删除的元素数量。
(7)LSET key index value:设定链表中指定位置的值为新值,其中0表示第一个元素,即头部元素,-1表示尾部元素。如果索引值index超出了该链表中元素的数量范围,该命令将返回相关的错误信息。
(8)LINDEX key index:该命令返回链表中指定位置(index)的元素,index是0-based,表示头部元素,如果index为-1,表示尾部元素。如果与该key关联的不是链表,该命令将返回相关的错误信息。如果index超出范围,返回nil。
(9)LTRIM key start stop:该命令将仅保留指定范围内的元素,从而保证链接中的元素数量相对恒定。start和stop参数都是0-based,0表示头部元素,-1表示尾部元素,如果start大于;链表的尾部,或者start大于stop,该命令不会报错,而是返回一个空的链表,与此同时key也将被删除。如果stop大于元素的数量,则保留从start开始剩余的所以元素。
(10)LINSERT key BEFORE|AFTER pivot value:在pivot元素的前面或者后面插入参数中的元素value。如果key不存在,该命令不执行任何操作,如果与key关联的value类型不是链表,相关的错误信息你将被返回。返回成功插入后链表中元素的数量。如果没有找到pivot,返回-1,如果key不存在,返回0。
(11)RPUSH key value[value…]:在指定key所关联的List Value的尾部插入参数中给出的所有values。如果该key不存在,该命令将在插入之前创建一个与该key关联的空链表,之后再将数据从链表的尾部插入。如果该键的value不是链表类型,该命令将返回相关的错误信息。该命令返回插入后链表中元素的数量。
(12)RPUSHX key value:仅有当参数中指定的Key存在时,该命令才会在其所关联的List Value的尾部插入参数中给出的Value,否则将不会有任何操作发生。 该命令返回插入后链表中元素的数量。
(13)RPOP key :返回并弹出指定Key关联的链表中的最后一个元素,即尾部元素,如果该Key不存,返回nil
(14)RPOPLPUSH source destination :原子性的从与source键关联的链表尾部弹出一个元素,同时再将弹出的元素插入到与destination键关联的链表的头部。如果source键不存在,该命令将返回nil,同时不再做任何其它的操作了。如果source和destination是同一个键,则相当于原子性的将其关联链表中的尾部元素移到该链表的头部。该命令返回弹出和插入的元素。 --------------------- 本文来自 Cortana_la 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/qq_27656675/article/details/68231961?utm_source=copy

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值