使用场景
消息队列。lpush与rpop命令组合可实现阻塞队列,生产者使用lpush从列表左侧放入消息,多个消费者客户端使用brpop命令阻塞式的“抢”列表尾部的元素,多个客户端保证了消费的负载均衡和高可用性;lpush与lpop实现栈,lpush与rpop实现队列,lpush与ltrim实现有限集合,lpush、brpop实现消息队列。
缓存列表。每个用户都有属于自己的文章列表。现在需要分页展示文章列表,这时可以考虑使用列表,因为列表不但是有序的,同时支持按照索引范围获取元素。每篇文章使用哈希结构存储,将文件key保存到用户文章列表。
实现
列表类型的实现有压缩列表ziplist、链表linkedlist。元素数量大于固定值,且有元素的大小超过固定值列表会转化为linkedlist
命令
#从右边插入元素
rpush key value
#从左边插入元素
lpush key value
#向某个元素前或者后插入元素
linsert key before|after
#获取指定范围内的元素列表
lrange key start end
#获取列表指定索引下的元素
lindex key index
#获取列表的长度
llen key
#从列表左侧弹出元素
lpop key
#从列表右侧弹出
rpop key
#删除指定元素
lrem key count value
#按照索引范围修剪列表
ltrim key start end
#修改指定索引下标的元素
lset key index newValue
#阻塞式弹出
blpop key [...] timeout
brpop key [...] timeout