Redis数据结构-列表

简介
  • 一个列表可以包含一个或以上数量的 项(item),每个项按照它们被推入到列表的位置来排列
  • 列表包含的项可以出现重复,它们不必是唯一的
  • 以有序的方式存储多个可重复的只,功能相当于Java中的队列操作
列表操作
  • LPUSH key value [value …]
    将一个或以上数量的值依次推入到列表的左端,命令返回新值被推入之后,列表目前包含的项数量

    127.0.0.1:6379> lpush list 1 2 3
    (integer) 3
    
  • LPOP key
    移除并返回列表最右端的项

    127.0.0.1:6379> lpop list
    "3"
    127.0.0.1:6379> lpop list
    "2"
    
  • RPUSH key value [value …]
    将一个或以上数量的值依次推入到列表的右端,命令返回新 值被推入之后,列表目前包含的 项数量

    127.0.0.1:6379> rpush list 4 5 6
    (integer) 6
    
  • RPOP key
    移除并返回列表最左端的项

    127.0.0.1:6379> rpop list
    "6"
    127.0.0.1:6379> rpop list
    "5"
    127.0.0.1:6379> rpop list
    "4"
    127.0.0.1:6379> rpop list
    "1"
    
  • LLEN key
    返回列表键 key 的长度,也即是,返回列表包含的列表项数量

    127.0.0.1:6379> llen list
    (integer) 0
    127.0.0.1:6379> lpush list 1 2 3 4 5 6
    (integer) 6
    
  • LINDEX key index
    返回列表键 key 中,指定索引 index 上的列表项,不会删除列表上原有的值,index索引可以是正数或者负数

    27.0.0.1:6379> lindex list 2
    "4"
    127.0.0.1:6379> llen list
    (integer) 6
    
  • LRANGE key start stop
    返回列表键 key 中,从索引 start 至索引 stop 范围内的所有列表项,不会删除列表上原有的值,两个索引参数都可以是正数或者
    负数

    127.0.0.1:6379> lrange list 1 5
    1) "5"
    2) "4"
    3) "3"
    4) "2"
    5) "1"
    127.0.0.1:6379> llen list
    (integer) 6
    
插入和删除操作
  • LSET key index value
    将列表键 key 索引index 上的列表项设置为value ,设置成功时命令返回 OK
    如果 index 参数超过了列表的索引范围,那么命令返回一个错误

    127.0.0.1:6379> lrange  list 1 5
    1) "5"
    2) "4"
    3) "3"
    4) "2"
    5) "1"
    127.0.0.1:6379> lset list 1 5x
    OK
    127.0.0.1:6379> lset list 100 5x
    (error) ERR index out of range
    127.0.0.1:6379> lrange  list 1 5
    1) "5x"
    2) "4"
    3) "3"
    4) "2"
    5) "1"
    	```
    
    
  • LINSERT key BEFORE|AFTER pivot value
    根据命令调用时传递的是 BEFORE 选项还是 AFTER 选项,将值 value 插入到指定列表项 pivot 的之前或者之后。当 pivot 不存在于列表 key 时,不执行任何操作

    127.0.0.1:6379> linsert list  before 4 400
    (integer) 7
    127.0.0.1:6379> lrange  list 1 10
    1) "5x"
    2) "400"
    3) "4"
    4) "3"
    5) "2"
    6) "1"
    
  • LREM key count value
    根据参数 count 的值,移除列表中与参数value相等的列表项
     • 如果 count > 0 ,那么从表头开始向表尾搜索,移除最多count 个值为 value 的列表项
     • 如果 count < 0 ,那么从表尾开始向表头搜索,移除最多abs(count) 个值为 value 的列表项
     • 如果 count = 0 ,那么移除列表中所有值为 value 的列表项
    命令返回被移除列表项的数量,移除列表中与参数 value 相等的列表项

  • LTRIM key start stop
    对一个列表进行修剪(trim),让列表只保留指定索引范围内的列表项,而将不在范围内的其他列表项全部
    删除。两个索引都可以是正数或者 负数,命令执行成功时返回 OK

    127.0.0.1:6379> lrange  list 1 6
    1) "5x"
    2) "400"
    3) "4"
    4) "3"
    5) "2"
    6) "1"
    127.0.0.1:6379> ltrim list 1 3
    OK
    127.0.0.1:6379> lrange list 1 6
    1) "400"
    2) "4"
    
阻塞式弹出操作
  • BLPOP key [key …] timeout
    命令会以从左到右的顺序,访问给定的各个列表,并弹出首个非空列表最左端的项
    如果所有给定列表都为空,那么客户端将被阻塞,直到等待超时,或者有可弹出的项出现为止
    设置 timeout 参数为 0 表示永远阻塞

  • BRPOP key [key …] timeout
    命令会以从左到右的顺序,访问给定的各个列表,并弹出首个非空列表最右端的项
    如果所有给定列表都为空,那么客户端将被阻塞,直到等待超时,或者有可弹出的项出现为止
    设置 timeout 参数为 0 表示永远阻塞

    127.0.0.1:6379> blpop list 0
    1) "list"
    2) "9"
    (3.18s)
    
  • BLPOP/BRPOP 的先到先服务原则
    如果有多个客户端同时因为某个列表而被阻塞,那么当有新值被推入到这个列表时,服务器会按照先到
    先服务(first in first service)原则,优先向最早被阻塞的客户端返回新值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值