1、限制条件
The max length of a Redis list is 2^32 - 1 (4,294,967,295) elements.
2、基本命令
LPUSH 添加新的元素到头部,或者讲是从左添加;
RPUSH 添加新的元素到尾部,或者讲是从右添加.
LPOP 从头部或者左边获取第一个元素并删除;
RPOP 从尾部或者右边获取第一个元素并删除.
LLEN 返回集合的长度
LMOVE 原子操作将元素从一个列表移动到另一个列表。
LTRIM 将列表缩小到指定的元素范围。
3、例子
(1)类似队列先进先出
> LPUSH work:queue:ids 12
(integer) 1
> LPUSH work:queue:ids 22
(integer) 2
> RPOP work:queue:ids
"12"
> RPOP work:queue:ids
"22"
(2)类似栈先进后出
> LPUSH work:queue:ids 101
(integer) 1
> LPUSH work:queue:ids 237
(integer) 2
> LPOP work:queue:ids
"237"
> LPOP work:queue:ids
"101"
(3)检查list的长度
> LLEN work:queue:ids
(integer) 0
(4)从一个列表中取出一个元素并将其推入另一个列表
> 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"
(5)要创建一个不超过100个元素的上限列表,你可以在每次调用LPUSH后调用LTRIM
> 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
4、阻塞的命令
BLPOP从列表的头部删除并返回一个元素。如果列表为空,则该命令将阻塞,直到某个元素可用或达到指定的超时。
BLMOVE原子地将元素从源列表移动到目标列表。如果源列表为空,则该命令将阻塞,直到新元素可用为止。
5、性能
访问其头部或尾部的列表操作是O(1),这意味着它们非常高效。然而,操作列表中元素的命令通常是O(n)。这些例子包括LINDEX、LINSERT和LSET。运行这些命令时请谨慎,特别是在操作大型列表时。