Redis常用数据类型--List

List

常用命令

LPUSH/RPUSH

将⼀个或者多个元素从左侧(头插) / 右侧(尾插)放入到 list 中

sql 复制代码
LPUSH key element [element ...]/RPUSH key element [element ...]

时间复杂度:只插⼊⼀个元素为 O(1), 插⼊多个元素为 O(N), N 为插⼊元素个数

LPUSHX/RPUSHX

在 key 存在时,将⼀个或者多个元素从左侧(头插) / 右侧(尾插)到 list 中。不存在,直接返回

sql 复制代码
LPUSHX key element [element ...]

时间复杂度:只插⼊⼀个元素为 O(1), 插⼊多个元素为 O(N), N 为插⼊元素个数

LRANGE

获取从 start 到 end 区间的所有元素,左闭右闭

sql 复制代码
LRANGE key start stop

时间复杂度:O(N)

LPOP/RPOP

从 list 左侧 / 右侧取出元素

sql 复制代码
LPOP key / RPOP key

时间复杂度:O(1)

LINDEX

获取从左数第 index 位置的元素

sql 复制代码
 LINDEX key index

时间复杂度:O(N)

LINSERT

在特定位置插⼊元素

sql 复制代码
LINSERT key <BEFORE | AFTER> pivot(具体数字) element

时间复杂度:O(N)

LLEN

获取 list ⻓度

sql 复制代码
LLEN key

时间复杂度:O(1)

BLPOP/BRPOP

LPOP / RPOP的阻塞版本

sql 复制代码
 BLPOP key [key ...] timeout /  BRPOP key [key ...] timeout

时间复杂度:O(1)

内部编码

基于双向链表的快速列表(quicklist):快速列表是Redis 3.2引入的一种数据结构,它是一种优化的双向链表,每个节点使用 ziplist 相邻节点使用链表相连

典型应用场景

  1. 消息队列
  2. 分页展示的文章列表
相关推荐
m0_733565467 小时前
golang如何实现RabbitMQ死信队列_golang RabbitMQ死信队列实现教程
jvm·数据库·python
weixin_444012937 小时前
CSS定位如何实现模态框垂直居中_使用负边距或transform
jvm·数据库·python
2301_783848658 小时前
Go 中实现高效图最大团划分的实践与边界分析
jvm·数据库·python
2401_884454158 小时前
C#怎么实现Socket心跳包 C#如何在TCP Socket通信中设计心跳机制检测连接状态【网络】
jvm·数据库·python
Jetev8 小时前
不同品牌SSD对HTML函数工具加载速度影响大吗_存储测试汇总【汇总】
jvm·数据库·python
SelectDB技术团队8 小时前
时间序列近邻关联性能实测:Doris ASOF JOIN 领先 ClickHouse、DuckDB
数据库·人工智能·selectdb
Traving Yu8 小时前
向量数据库Milvus
数据库·人工智能·milvus
2501_901006478 小时前
golang如何使用DTM分布式事务框架_golang DTM分布式事务框架使用方法
jvm·数据库·python
2501_901200538 小时前
Golang如何做Clean Architecture_Golang整洁架构教程【详解】
jvm·数据库·python
咖啡里的茶i8 小时前
实验三 数据完整性实验
数据库·oracle