前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis 系列(4) —— 列表

Redis 系列(4) —— 列表

作者头像
求和小熊猫
发布2021-12-06 13:02:13
1860
发布2021-12-06 13:02:13
举报

列表

Redis 的列表是一种先行有序结构,可以安装元素被推入列表中的顺序来存储元素。这些元素既可以是文字数据,又可以是二进制数据。并且列表中的数据可以重复出现

列表的相关命令

1. 往列表中插入元素

从列表右边插入元素的命令格式为rpush key element [element...] 从列表左边插入元素的命令格式为 lpush key element [element...] 向某个元素前或后插入元素的命令格式为 linsert key before|after pivot value 【示例】

代码语言:javascript
复制
127.0.0.1:6379> rpush ltest a b c
(integer) 3
127.0.0.1:6379> lpush ltest j k l
(integer) 6
127.0.0.1:6379> linsert ltest before j test
(integer) 7
2. 查找列表中的元素

获取指定范围元素列表的命令格式为 lrange key start stop 获取列表指定索引下的元素的命令格式为 lindex key index 获取表长度的命令格式为 llen key 【示例】

代码语言:javascript
复制
127.0.0.1:6379> lrange ltest 2 4
1) "test"
2) "j"
3) "a"
127.0.0.1:6379> lindex ltest 4
"a"
127.0.0.1:6379> llen ltest
(integer) 7
3. 删除列表中的元素的命令格式为

从列表左侧弹出的命令格式为 lpop key 从列表右边弹出的命令格式为 rpop key 删除列表指定元素的命令格式为 lrem key count value,当 count > 0 时是从左到右删除最多 count 个元素,当 count < 0 时是从右到左删除,count = 0 时 是全部删除。 按照索引范围修剪列表 ltrim key start stop

4. 修改列表中元素

修改指定索引下标元素的命令格式为 lset key index element

5. 阻塞命令

阻塞式弹出的命令格式为 blpop key [key...] timeoutbrpop key [key...] timeout 阻塞式弹出并推入的命令格式为 brpoplpush source destination timeout , 该命令用于将弹出源列表的右端元素,并将该元素推入到目标列表的左端。

列表的内部编码

ziplist (压缩列表) : 当列表的元素小于 list-max-ziplist-entries 配置,同时列表中每个元素的值都小于 list-max-ziplist-value 配置时,Redis 会选用 ziplist 来作为列表的内部实现来减少内存的使用。

linkedlist (链表) : 当列表类型无法满足 ziplist 条件时。Redis 会使用 linkedlist 作为列表的内部实现。

列表的使用场景

消息队列

Redis 可以使用利用阻塞命令来实现一个简单的消息队列的功能 Redis 的 lpush + brpop 命令即可实现阻塞队列,生产者客户端使用 lpush 从列表左侧插入元素,消费者使用 brpop 来消费列表右侧的元素。

img
img
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-11-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 列表
    • 列表的相关命令
      • 列表的内部编码
        • 列表的使用场景
        相关产品与服务
        云数据库 Redis
        腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档