1. "如何在ubuntu18.04上安裝和保護redis" 2. "如何連接到Redis資料庫" 3. "如何管理Redis資料庫和Keys" 4. "如何在Redis中管理副本和客戶端" 5. "如何在Redis中管理字元串" 6. "如何在Redis中管理list" 7. "如何在Redis中 ...
- 如何在ubuntu18.04上安裝和保護redis
- 如何連接到Redis資料庫
- 如何管理Redis資料庫和Keys
- 如何在Redis中管理副本和客戶端
- 如何在Redis中管理字元串
- 如何在Redis中管理list
- 如何在Redis中管理Hashes
- 如何在Redis中管理Sets
- 如何在Redis中管理Sorted Sets
- 如何在Redis中運行事務
- 如何使Redis中的Key失效
- 如何解決Redis中的問題
- 如何從命令行更改Redis的配置
- Redis數據類型簡介
介紹
Redis是一個開源的記憶體中鍵值數據存儲。在Redis中,列表是按插入順序排序的字元串的集合,類似於鏈接列表。本教程介紹瞭如何在Redis列表中創建和使用元素。
如何使用本指南
本指南以備有完整示例的備忘單形式編寫。我們鼓勵您跳至與您要完成的任務相關的任何部分。
本指南中顯示的命令已在運行Redis版本4.0.9的Ubuntu 18.04伺服器上進行了測試。要設置類似的環境,您可以按照我們的指南如何在Ubuntu 18.04上安裝和保護Redis的步驟1進行操作。我們將通過使用Redis命令行界面運行它們來演示這些命令的行為。請註意,如果您使用其他Redis界面(例如Redli),則某些命令的確切輸出可能會有所不同。redis-cli
另外,您可以提供一個托管的Redis資料庫實例來測試這些命令,但是請註意,根據資料庫提供者所允許的控制級別,本指南中的某些命令可能無法按所述方式工作。要配置DigitalOcean托管資料庫,請遵循我們的托管資料庫產品文檔。然後,您必須 安裝Redli 或 設置TLS隧道才能通過TLS連接到托管資料庫。
Creating Lists
一個鍵只能容納一個列表,儘管任何列表都可以容納40億個元素。Redis從左到右讀取列表,您可以使用命令將新列表元素添加到列表的開頭(“左”端),lpush
也可以使用尾部(“右”端)添加新元素rpush
。您還可以使用lpush
或rpush
創建新列表:
lpush key value
這兩個命令都將輸出一個整數,以顯示列表中有多少個元素。為了說明,請運行以下命令以創建包含“我認為是我”的格言的列表:
lpush key_philosophy1 "therefore"
lpush key_philosophy1 "think"
rpush key_philosophy1 "I"
lpush key_philosophy1 "I"
rpush key_philosophy1 "am"
最後一條命令的輸出將顯示為:
(integer) 5
請註意,您可以使用單個lpush
或rpush
語句添加多個列表元素:
rpush key_philosophy1 "-" "Rene" "Decartes"
該lpushx
和rpushx
命令也用於元素添加到列表中,但如果給定的名單已經存在只會工作。如果任何一個命令失敗,它將返回(integer) 0
:
rpushx key_philosophy2 "Happiness" "is" "the" "highest" "good" "–" "Aristotle"
(integer) 0
要更改列表中的現有元素,請運行lset
命令,然後輸入鍵名,要更改的元素的索引和新值:
lset key_philosophy1 5 "sayeth"
如果嘗試將列表元素添加到不包含列表的現有鍵中,則會導致數據類型衝突並返回錯誤。例如,以下set
命令創建一個保存字元串的鍵,因此以下嘗試向其中添加列表元素的嘗試lpush
將失敗:
set key_philosophy3 "What is love?"
lpush key_philosophy3 "Baby don't hurt me"
(error) WRONGTYPE Operation against a key holding the wrong kind of value
無法將Redis密鑰從一種數據類型轉換為另一種數據類型,因此要變成key_philosophy3
列表,您需要刪除該密鑰並使用lpush
or rpush
命令重新開始。
從列表中檢索元素(Retrieving Elements from a List)
要檢索列表中的項目範圍,請使用lrange
命令,後跟起始偏移量和終止偏移量。每個偏移量都是從零開始的索引,0
表示代表列表中的第一個元素,1
代表下一個,依此類推。
以下命令將從上一節創建的示例列表中返回所有元素:
lrange key_philosophy1 0 7
1) "I"
2) "think"
3) "therefore"
4) "I"
5) "am"
6) "sayeth"
7) "Rene"
8) "Decartes"
傳遞給的偏移量lrange
也可以為負數。在這種情況下使用時,-1
代表列表中的最後一個元素,-2
代表列表中的倒數第二個元素,依此類推。以下示例返回保存在列表中的最後三個元素key_philosophy1
:
lrange key_philosophy1 -3 -1
1) "I"
2) "am"
3) "sayeth"
要從列表中檢索單個元素,可以使用lindex
命令。但是,此命令要求您提供元素的索引作為參數。與一樣lrange
,索引是從零開始的,這意味著第一個元素在index 0
,第二個元素在index 1
,依此類推:
lindex key_philosophy1 4
"am"
要查找給定列表中有多少個元素,請使用以下llen
命令,該命令是“ l ist len gth”的縮寫:
llen key_philosophy1
(integer) 8
如果存儲在給定鍵上的值不存在,llen
將返回錯誤。
從列表中刪除元素
該lrem
命令將刪除與給定值匹配的已定義次數的第一個。要對此進行試驗,請創建以下列表:
rpush key_Bond "Never" "Say" "Never" "Again" "You" "Only" "Live" "Twice" "Live" "and" "Let" "Die" "Tomorrow" "Never" "Dies"
以下lrem
示例將刪除該值的第一次出現"Live"
:
lrem key_Bond 1 "Live"
此命令將輸出從列表中刪除的元素數量:
(integer) 1
傳遞給lrem
命令的數字也可以為負數。以下示例將刪除該值的最後兩個出現"Never"
:
lrem key_Bond -2 "Never"
(integer) 2
該lpop
命令從列表中刪除並返回第一個或“最左邊”的元素:
lpop key_Bond
"Never"
同樣,要從列表中刪除並返回最後或“最右邊”的元素,請使用rpop
:
rpop key_Bond
"Dies"
Redis還包括rpoplpush
命令,該命令從列表中刪除最後一個元素並將其推到另一個列表的開頭:
rpoplpush key_Bond key_AfterToday
"Tomorrow"
如果傳遞給rpoplpush
命令的源鍵和目標鍵相同,則它將實質上旋轉列表中的元素。
結論
本指南詳細介紹了可用於在Redis中創建和管理列表的許多命令。如果您想在本指南中概述其他相關的命令,參數或過程,請在下麵的評論中提出疑問或提出建議。
有關Redis命令的更多信息,請參閱關於如何管理Redis資料庫的系列教程。