列表类型是用来存储多个有序
的字符串。
个元素。
可以 对列 表 两端 插入( push) 和 弹出( pop), 还可以 获取 指定范围的元素列表、 获取 指定索引下标的元素 等。
列表可以充当栈和队列的角色。
列表类型的特点
- 列表中的元素是有序的。
- 列表中的元素是可以重复的。
命令
- 添加操作
- 从右边插入元素
rpush key value [value ...]
- 从左边插入元素
lpush key value [value ...]
- 向某个元素前或者后插入元素
linsert key before|after pivot value
- 查找
- 获取指定范围内的元素列表
lrange key start end
从左到右获取列表的所有元素lrange key 0 -1
- 获取列表指定索引下标的元素
lindex key index
- 获取列表长度
llen key
- 删除
- 从列表左侧弹出
lpop key
- 从列表右侧弹出
rpop key
- 删除指定元素
lrem key count value
- 按照索引范围修剪列表
ltrim key start end
- 修改
- 修改指定索引下标的元素
lset key index newValue
- 阻塞操作(阻塞式弹出)
blpop key [key ...] timeout
brpop key [key ...] timeout
内部编码
- ziplist(压缩列表)
- linkedlist(链表)
- quicklist
使用场景
- 消息队列
redis的lpush + brpop 命令组合即可实现阻塞队列。生产者+消费者 - 文章列表
每篇文章用哈希结构存储
向用户文章列表添加文章
分页获取用户文章列表
列表口诀:
- lpush+ lpop= Stack( 栈)
- lpush+ rpop= Queue( 队列)
- lpush+ ltrim= Capped Collection( 有限集合)
- lpush+ brpop= Message Queue( 消息队列)
L:left(左)
R:right(右)