(1)簡介
Redis中的List型別是一個雙端連結串列結構 , 類似於Java 中的 LinkedList。可以在其頭部(左邊)或尾部(右邊)進行新增和刪除操作 , 一個列表最多可以包含 2 ^ 32 -1個元素(超40億)
(2)常用命令
命令 | 含義 |
---|---|
lpush key element [element ...] |
將一個或多個值插入到列表的頭部(從左側新增) |
rpush key element [element ...] |
將一個或多個值插入到列表的尾部(從右側新增) |
lpushx key element [element ...] |
將一個或多個值插入到已存在的列表的頭部 若列表不存在 , 操作無效 |
rpushx key element [element ...] |
將一個或多個值插入到已存在的列表的尾部 若列表不存在 , 操作無效 |
llen key |
獲取列表長度 |
lindex key index |
透過索引獲取列表中的元素 |
lrange key start stop |
獲取列表指定範圍內的元素(包括start和stop) , 常用於分頁 |
lpop key |
移除並獲取第一個元素(從左側彈出一個元素) |
rpop key |
移除並獲取最後一個元素(從右側彈出一個元素) |
blpop key [key ...] timeout |
移除並獲取第一個元素 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止 |
brpop key [key ...] timeout |
移除並獲取最後一個元素 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止 |
ltrim key start stop |
對一個列表進行修剪 只保留指定區間內的元素(包括start和stop) |
lset key index element |
透過索引設定列表元素的值 |
``linsert key BEFORE | AFTER pivot element`` |
rpoplpush source destination |
刪除並返回source列表的右側一個元素 並將其存入destination列表的左側 |
brpoplpush source destination timeout |
刪除並返回source列表的右側一個元素 並將其存入destination列表的左側 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止 |
lrem key count value |
移除列表元素 |
(3)列表的索引
列表的索引分為 正向索引 和 反向索引
正向索引從 0 開始 , 0 表示第一個元素 , 1 表示第二個元素 , 以此類推
反向索引從 -1 開始 , -1 表示最後一個索引 , -2 表示倒數第二個索引 , 以此類推
(4)應用場景
- 對資料量大的集合資料刪減
列表資料顯示、關注列表、粉絲列表、留言評價、分頁、新聞(Top5)等
利用lrange實現分頁功能 , 例如在部落格系統中, 每篇博文的評論可以存入一個單獨的list中
- 任務佇列