Redis 列表
评论 0
浏览 0
2023-06-15
Redis 列表简介
Redis 列表是字符串值的链接列表。 Redis 列表经常用于:
- 实现堆栈和队列。
- 为后台工作系统构建队列管理。
例子
- 将列表视为队列(先进先出):
> LPUSH work:queue:ids 101
(integer) 1
> LPUSH work:queue:ids 237
(integer) 2
> RPOP work:queue:ids
"101"
> RPOP work:queue:ids
"237"
- 将列表视为堆栈(先进后出):
> LPUSH work:queue:ids 101
(integer) 1
> LPUSH work:queue:ids 237
(integer) 2
> LPOP work:queue:ids
"237"
> LPOP work:queue:ids
"101"
- 检查列表的长度:
> LLEN work:queue:ids
(integer) 0
- 以原子方式从一个列表中弹出一个元素并将其推送到另一个列表:
> LPUSH board:todo:ids 101
(integer) 1
> LPUSH board:todo:ids 273
(integer) 2
> LMOVE board:todo:ids board:in-progress:ids LEFT LEFT
"273"
> LRANGE board:todo:ids 0 -1
1) "101"
> LRANGE board:in-progress:ids 0 -1
1) "273"
> LPUSH notifications:user:1 "You've got mail!"
(integer) 1
> LTRIM notifications:user:1 0 99
OK
> LPUSH notifications:user:1 "Your package will be delivered at 12:01 today."
(integer) 2
> LTRIM notifications:user:1 0 99
OK
限制
Redis 列表的最大长度为 2^32 - 1 (4,294,967,295) 个元素。
基本命令
LPUSH
将新元素添加到列表的头部;RPUSH
添加到尾部。LPOP
从列表头部删除并返回一个元素;RPOP
执行相同的操作,但从列表的尾部开始。LLEN
返回列表的长度。LMOVE
以原子方式将元素从一个列表移动到另一个列表。LTRIM
将列表缩小到指定的元素范围。
阻塞命令
列表支持多个阻塞命令。 例如:
BLPOP
从列表头部删除并返回一个元素。 如果列表为空,则该命令将阻塞,直到有元素可用或达到指定的超时为止。BLMOVE
以原子方式将元素从源列表移动到目标列表。 如果源列表为空,该命令将阻塞,直到有新元素可用。
请参阅完整的列表命令系列。
性能
访问其头部或尾部的列表操作的复杂度为 O(1),这意味着它们非常高效。
然而,操作列表中元素的命令通常是 O(n)。
其中的示例包括 LINDEX
、LINSERT
和 LSET
。
运行这些命令时请务必小心,尤其是在大型列表上操作时。
备择方案
当您需要存储和处理一系列不确定的事件时,请考虑使用 Redis 流 作为列表的替代方案。
了解更多
- Redis 列表解释 是有关 Redis 列表的简短而全面的视频解释。
- Redis 大学的 RU101 详细介绍了 Redis 列表。
0 个评论