列表類型是用來存儲多個有序
的字符串。
個元素。
可以 對列 表 兩端 插入( 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(右)