在最近的 文章 中,我們簡單介紹了 Redis 的六種資料類型。其中 Redis List 包含一組字串,並以字串被加入的順序排序。本文將深入了解 List 資料類型,並重點介紹一些用於管理它們的主要命令。
List 的效能
在 Redis 中,值得注意的是,List 是一個連結列表。它是一種由多個節點組成的資料結構,每個節點包含資料欄位以及指向列表中下一個節點的「next」參考(連結):
這種結構對效能有一些重要的影響。在 List 的頭部和尾部加入元素會很快,但是尋找 List 中的元素會較慢,因為我們無法像在陣列中那樣對元素進行索引存取。
建立 List
Redis 的 RPUSH 和 LPUSH 命令都可以用來建立 List。這兩個命令都包含推送資料,並在其後加上鍵名稱。如果鍵不存在,命令將傳回一個傳遞參數作為元素的新 List。如果鍵已經存在或者它不是一個 List,則會傳回一個錯誤。
RPUSH
RPUSH 命令在 List 的後面(尾部)插入一個新元素:
RPUSH key value [value ...]
我們會建立一個「guitars」鍵,代表吉他品牌的一個 List:
RPUSH guitars "Jackson" // 1 RPUSH guitars "Fender" // 2 RPUSH guitars "Gibson" // 3
每次插入一個元素時,Redis 都會傳回插入後 List 的長度。在執行上述三個陳述式之後,guitars 鍵將包含以下三個元素:
Jackson Fender Gibson
LPUSH
LPUSH 與 RPUSH 類似,只是它在 List 的前面(頭部)插入元素:
LPUSH key value [value ...]
我們可以使用 LPUSH 命令在 guitars 列表的前面插入一個新值,如下所示:
LPUSH guitars "Ibanez" //4
現在我們有四把吉他,以「Ibanez」開頭:
Ibanez Jackson Fender Gibson
在 Navicat 中建立 List
在 Navicat for Redis 編輯器中,List 值表示為「元素」。按一下元素右側的省略號 [...] 按鈕會開啟一個特殊的編輯器,你可以在其中輸入一個 List 元素:
按一下「套用」按鈕會加入新的 List 或元素。
加入 List 或元素後,可以使用上箭頭和下箭頭按鈕變更元素在 List 中的位置。
使用 LRANGE 命令擷取 List 項目
LRANGE 命令根據指定的起始索引和停止索引傳回 List 的子集:
LRANGE key start stop
我們可以指定開始索引和停止索引值為 0 和 -1 來查看完整的 List:
LRANGE guitars 0 -1 //returns Ibanez Jackson Fender Gibson
與此同時,以下命令擷取 List 中的前兩個吉他品牌:
LRANGE guitars 0 1 //returns Ibanez Jackson
從 List 中移除元素
LPOP 命令移除並傳回 List 的第一個元素,而 RPOP 命令移除並傳回 List 的最後一個元素。以下是一些範例:
LPOP guitars //returns Ibanez RPOP guitars //returns Gibson
在 Navicat 編輯器中,可以選取任何 List 元素並按一下元素值下面的「刪除 [-]」按鈕來移除它。
總結
本文重點介紹了使用 redis-cli 和 Navicat for Redis 管理 Redis List 所用到的一些主要命令。
如果你想試用 Navicat for Redis,可以 在此 下載試用版。試用版具備完整功能,試用期為 14 天。