Redis 的 List
类型是一个双向链表数据结构,支持在头部和尾部进行插入、删除和查询操作。以下是一些常见的 List
操作命令:
1. 插入元素
LPUSH key element [element ...]
将一个或多个元素插入到列表的头部(左边)。
示例:LPUSH mylist "A" "B"
结果:mylist
变为["B", "A"]
。RPUSH key element [element ...]
将一个或多个元素插入到列表的尾部(右边)。
示例:RPUSH mylist "C" "D"
结果:mylist
变为["B", "A", "C", "D"]
。LINSERT key BEFORE|AFTER pivot element
在列表中某个元素(pivot
)的前面或后面插入一个新元素。
示例:LINSERT mylist BEFORE "C" "X"
结果:mylist
变为["B", "A", "X", "C", "D"]
。
2. 删除元素
LPOP key [count]
移除并返回列表头部的一个或多个元素。
示例:LPOP mylist
结果:返回"B"
,mylist
变为["A", "X", "C", "D"]
。RPOP key [count]
移除并返回列表尾部的一个或多个元素。
示例:RPOP mylist
结果:返回"D"
,mylist
变为["A", "X", "C"]
。LREM key count element
从列表中删除指定数量的匹配元素。count > 0
:从头部开始删除。count < 0
:从尾部开始删除。count = 0
:删除所有匹配元素。
示例:LREM mylist 1 "X"
结果:mylist
变为["A", "C"]
。
LTRIM key start stop
修剪列表,只保留指定范围内的元素,其余元素删除。
示例:LTRIM mylist 0 1
结果:mylist
变为["A", "C"]
。
3. 查询元素
LRANGE key start stop
返回列表中指定范围内的元素。
示例:LRANGE mylist 0 -1
结果:返回["A", "C"]
(-1
表示最后一个元素)。LINDEX key index
返回列表中指定索引位置的元素。
示例:LINDEX mylist 1
结果:返回"C"
。LLEN key
返回列表的长度。
示例:LLEN mylist
结果:返回2
。
4. 修改元素
LSET key index element
将列表中指定索引位置的元素替换为新值。
示例:LSET mylist 1 "Z"
结果:mylist
变为["A", "Z"]
。
5. 阻塞操作
BLPOP key [key ...] timeout
从列表头部移除并返回元素。如果列表为空,则阻塞直到有元素可用或超时。
示例:BLPOP mylist 10
结果:如果mylist
为空,则阻塞 10 秒。BRPOP key [key ...] timeout
从列表尾部移除并返回元素。如果列表为空,则阻塞直到有元素可用或超时。
示例:BRPOP mylist 10
结果:如果mylist
为空,则阻塞 10 秒。BRPOPLPUSH source destination timeout
从source
列表尾部移除元素,并将其插入到destination
列表的头部。如果source
为空,则阻塞直到有元素可用或超时。
示例:BRPOPLPUSH mylist mybackup 10
结果:将mylist
的尾部元素移动到mybackup
的头部。
6. 其他操作
RPOPLPUSH source destination
从source
列表尾部移除元素,并将其插入到destination
列表的头部。
示例:RPOPLPUSH mylist mybackup
结果:将mylist
的尾部元素移动到mybackup
的头部。LMOVE source destination LEFT|RIGHT LEFT|RIGHT
从source
列表的指定方向移除元素,并将其插入到destination
列表的指定方向。
示例:LMOVE mylist mybackup LEFT RIGHT
结果:将mylist
的头部元素移动到mybackup
的尾部。
总结
Redis 的 List
类型支持丰富的操作命令,包括插入、删除、查询、修改和阻塞操作。通过这些命令,可以实现队列、栈、消息队列等常见数据结构。以下是一些常见用途:
- 队列:使用
LPUSH
和RPOP
。 - 栈:使用
LPUSH
和LPOP
。 - 消息队列:使用
BLPOP
或BRPOP
实现阻塞队列。
THE END
暂无评论内容