当前位置: 首页 > news >正文

【Redis】List 类型的介绍和常用命令

1. 介绍

Redis 中的 list 相当于顺序表,并且内部更接近于“双端队列”,所以也支持头插和尾插的操作,可以当做队列或者栈来使用,同时也存在下标的概念,不过和 Java 中的下标不同,Redis 支持负数下标,-1 表示倒数第一个元素,-2 表示倒数第二个元素,和 Java 中的 List 相同的是,列表中的元素是有序的,并且允许重复

 

2. 常用命令

命令

介绍

时间

rpush key value [value ...]

将一个或多个值插入到列表 key 的表尾(最右边)

O (k),k 是元素个数

lpush key value [value ...]

将一个或多个值插入到列表 key 的表头(最左边)

O (k),k 是元素个数

linsert key before

在列表的元素 pivot 之前插入元素 value

O (n),n 是 pivot 距离头的距离

after pivot value

在列表的元素 pivot 之后插入元素 value

O (n),n 是 pivot 距离头的距离

lrange key start end

获取列表指定范围内的元素

O (s+n),s 是 start 偏移量,n 是 start 到 end 的范围。

lindex key index

通过索引获取列表中的元素

O (n),n 是索引的偏移量

llen key

获取列表的长度

O (1)

lpop key

移除并返回列表 key 的头元素

O (1)

rpop key

移除并返回列表 key 的尾元素

O (1)

lrem key count value

count 大于 0 时,从左开始搜索,小于 0 时从右开始搜索,删除count 个值等于 value 的元素

O (k),k 是元素个数

ltrim key start end

保留 key 对应列表中指定区间 [start, end] 的元素

O (k),k 是元素个数

lset key index value

将列表 key 下标为 index 的元素的值设置为 value

O (n),n 是索引的偏移量。

blpop

lpop 的阻塞版本

O (1)

brpop

rpop 的阻塞版本

O (1)

3. 内部编码

在 Redis 3.2 之前主要采用linkedlistziplist,3.2 之后主要采用quicklist

linkedlist:双向链表

ziplist:经过特殊编码的连续内存块的顺序存储结构,它将多个元素紧凑地存储在一起,以节省内存空间

quicklist:它是一个双向链表,每个节点是一个 ziplist

4. 应用场景

  1. 消息队列

可以使用 lpush + brpop 来实现生产者-消费者模型队列

  1. 最新消息列表

用于展示最新的一些信息,如社交媒体平台上用户的最新动态、新闻网站的最新消息等,每当有新消息产生时,使用rpush命令将消息添加到 List 的尾部。要获取最新消息,通过lrange命令并设置合适的参数来获取 List 尾部的若干条消息。比如,在一个微博系统中,用户发布的微博可以存储在一个 List 结构中,通过获取 List 的尾部消息来展示用户关注的人发布的最新微博,可以方便地控制显示的消息数量,并且按照消息的发布顺序进行存储和展示,易于实现分页功能,以展示更多的消息

http://www.lryc.cn/news/528511.html

相关文章:

  • 三个不推荐使用的线程池
  • mybatis(78/134)
  • Progressive Pretext Task Learning for Human Trajectory Prediction | 文献翻译
  • 54.数字翻译成字符串的可能性|Marscode AI刷题
  • 【数据结构】_链表经典算法OJ(力扣版)
  • 【Linux】统计文本中每行指定位置出现的字符串的次数
  • 【赵渝强老师】K8s中Pod探针的ExecAction
  • 商品信息管理自动化测试
  • Redis实战(黑马点评)——redis存储地理信息、位图、HyperLogLog 用法
  • 判断1到100之间有多少个素数,并输出所有的素数。
  • JAVA:利用 Content Negotiation 实现多样式响应格式的技术指南
  • layui Table单元格编辑支持Enter键换行,包括下拉框单元格
  • Swoole的MySQL连接池实现
  • 无人机红外热成像:应急消防的“透视眼”
  • 【redis】Redis操作String类型key的发生了什么?
  • hdfs之读写流程
  • 研发的立足之本到底是啥?
  • Baklib揭示内容中台与人工智能技术的创新协同效应
  • 智慧消防营区一体化安全管控 2024 年度深度剖析与展望
  • 自定义数据集,使用 PyTorch 框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测
  • UE5 特效
  • CMAKE工程编译好后自动把可执行文件传输到远程开发板
  • Windows 程序设计7:文件的创建、打开与关闭
  • 策略模式 - 策略模式的使用
  • 具身智能研究报告
  • Windows安装Milvus
  • Excel分区间统计分析(等步长、不等步长、多维度)
  • 宝塔mysql数据库容量限制_宝塔数据库mysql-bin.000001占用磁盘空间过大
  • LeetCode 2412.完成所有交易的初始最少钱数:【年度巨献】举例说明(讲明白),由难至简(手脚不乱),附Python一行版
  • 多人-多agent协同可能会挑战维纳的反馈