006_Redis的List数据类型
1. List類型是一個鏈表結構的集合, 主要功能有push, pop, 獲取元素等。List類型是一個雙端鏈表的結構, 我們可以通過相關操作進行集合的頭部或者尾部添加刪除元素, List的設計非常簡單精巧, 既可以做為棧, 又可以作為隊列。List類型可以存放相同的值。
2. 將一個或多個值插入到列表頭部
2.1. 語法: lpush key value1 [value2]。
2.2. lpush命令將一個或多個值插入到列表頭部(棧的功能, 先進后出)。如果key不存在, 一個空列表會被創建并執行lpush操作。當key存在但不是列表類型時, 返回一個錯誤。
2.3. 返回執行lpush命令后, 列表的長度。
2.4. 實例
3. 將一個或多個值插入到列表尾部
3.1. 語法: rpush key value1 [value2]。
3.1. rpush命令用于將一個或多個值插入到列表的尾部(隊列的功能, 先進先出)。如果列表不存在, 一個空列表會被創建并執行rpush操作。當列表存在但不是列表類型時, 返回一個錯誤。
3.1. 返回執行rpush操作后, 列表的長度。
3.1. 實例
4. 移出并獲取列表的第一個元素
4.1. 語法: lpop key。
4.2. lpop命令移出列表的第一個元素(頭部), 并返回元素。
4.3. 返回列表的第一個元素(移除的元素)。當列表key不存在時, 返回nil。
4.4. 實例
5. 移除并獲取列表的最后一個元素
5.1. 語法: rpop key。
5.2. rpop命令用于移除列表的最后一個元素(尾部), 返回值為移除的元素。
5.3. 返回列表的最后一個元素(移除的元素)。當列表key不存在時, 返回nil。
5.4. 實例
6. 在列表的元素前或者后插入元素
6.1. 語法: linsert key before|after pivot value。
6.2. linsert命令用于在列表的元素前或者后插入元素。當指定元素不存在于列表中時, 不執行任何操作。當列表不存在時, 被視為空列表, 不執行任何操作。如果key不是列表類型, 返回一個錯誤。
6.3. 如果命令執行成功, 返回插入操作完成之后, 列表的長度。如果沒有找到指定元素, 返回-1。如果key不存在或為空列表, 返回0。
6.4. 實例
7. 獲取列表長度
7.1. 語法: llen key。
7.2. llen命令用于返回列表的長度。如果列表key不存在, 則key被解釋為一個空列表, 返回0。如果key不是列表類型, 返回一個錯誤。
7.3. 返回列表的長度。
7.4. 實例
8. 獲取列表指定范圍內的元素
8.1. 語法: lrange key start stop。
8.2. lrange返回列表中指定區間內的元素, 區間以偏移量start和end指定。其中0表示列表的第一個元素, 1表示列表的第二個元素, 以此類推。你也可以使用負數下標, 以-1表示列表的最后一個元素, -2表示列表的倒數第二個元素, 以此類推。
8.3. 返回一個列表, 包含指定區間內的元素。
8.4. 實例
9. 通過索引獲取列表中的元素
9.1. 語法: lindex key index。
9.2. lindex命令用于通過索引獲取列表中的元素。你也可以使用負數下標, 以-1表示列表的最后一個元素, -2表示列表的倒數第二個元素, 以此類推。
9.3. 返回列表中下標為指定索引值的元素。如果指定索引值不在列表的區間范圍內, 返回nil。
9.4. 實例
10. 通過索引設置列表元素的值
10.1. 語法: lset key index value。
10.1. lset通過索引來設置元素的值。當索引參數超出范圍或對一個空列表進行lset時, 返回一個錯誤。
10.1. 返回操作成功返回ok, 否則返回錯誤信息。
10.1. 實例
11. 對一個列表進行修剪
11.1. 語法: ltrim key start stop。
11.2. ltrim對一個列表進行修剪(trim), 就是說, 讓列表只保留指定區間內的元素, 不在指定區間之內的元素都將被刪除。下標0表示列表的第一個元素, 以1表示列表的第二個元素, 以此類推。 你也可以使用負數下標, 以-1表示列表的最后一個元素, -2表示列表的倒數第二個元素, 以此類推。
11.3. 命令執行成功時, 返回ok。
11.4. 實例
12. 移除列表元素
12.1. 語法: lrem key count value。
12.2. lrem根據參數count的值, 移除列表中與參數value相等的元素。
count 的值可以是以下幾種:
count > 0: 從表頭開始向表尾搜索, 移除與value相等的元素, 數量為count。
count < 0: 從表尾開始向表頭搜索, 移除與value相等的元素, 數量為count的絕對值。
count = 0: 移除表中所有與value相等的值。
12.3. 返回被移除元素的數量。列表不存在時返回0。
12.4. 實例
13. 將一個值插入到已存在的列表頭部
13.1. 語法: lpushx key value。
13.1. lpushx將一個值插入到已存在的列表頭部, 列表不存在時操作無效。
13.1. 返回lpushx命令執行之后, 列表的長度。
13.1. 實例
14. 將一個值插入到已存在的列表尾部
14.1. 語法: rpushx key value。
14.1. rpushx命令用于將一個值插入到已存在的列表尾部。如果列表不存在, 操作無效。
14.1. 返回執行rpushx操作后, 列表的長度。
14.1. 實例
15. 移除列表的最后一個元素到另一個列表并返回元素
15.1. 語法: rpoplpush source destination。
15.2. rpoplpush命令用于移除列表的最后一個元素, 并將該元素添加到另一個列表并返回元素。
15.3. 返回被彈出的元素。
15.4. 實例
16. 移除并獲取列表的第一個元素并設置超時時間
16.1. 語法: blpop key1 [key2] timeout。
16.1. blpop命令移出并獲取列表的第一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。超時時間以秒為單位。
16.1. 如果列表為空, 返回一個nil。否則, 返回一個含有兩個元素的列表, 第一個元素是被彈出元素所屬的key, 第二個元素是被彈出元素的值。
16.1. 實例
17. 移除并獲取列表的最后一個元素并設置超時時間
17.1. 語法: brpop key1 [key2] timeout。
17.2. brpop命令移出并獲取列表的最后一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。超時時間以秒為單位。
17.3. 假如在指定時間內沒有任何元素被彈出, 則返回一個nil和等待時長。反之, 返回一個含有兩個元素的列表, 第一個元素是被彈出元素所屬的key, 第二個元素是被彈出元素的值。
17.4. 實例
18. 從列表中取出最后一個元素并插入到另外一個列表的頭部并設置超時時間
18.1. 語法: brpoplpush source destination timeout。
18.2. brpoplpush命令從列表中取出最后一個元素, 并插入到另外一個列表的頭部; 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。超時時間以秒為單位。
18.3. 假如在指定時間內沒有任何元素被彈出, 則返回一個nil和等待時長。反之, 返回被彈出的元素值。
18.4. 實例
總結
以上是生活随笔為你收集整理的006_Redis的List数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 018_Jedis的Hash数据类型
- 下一篇: 019_Jedis的List数据类型