(Redis基礎教程之六)如何使用Redis中的List


  1. 如何在ubuntu18.04上安裝和保護redis
  2. 如何連接到Redis數據庫
  3. 如何管理Redis數據庫和Keys
  4. 如何在Redis中管理副本和客戶端
  5. 如何在Redis中管理字符串
  6. 如何在Redis中管理list
  7. 如何在Redis中管理Hashes
  8. 如何在Redis中管理Sets
  9. 如何在Redis中管理Sorted Sets
  10. 如何在Redis中運行事務
  11. 如何使Redis中的Key失效
  12. 如何解決Redis中的問題
  13. 如何從命令行更改Redis的配置
  14. 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。您還可以使用lpushrpush創建新列表:

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

請注意,您可以使用單個lpushrpush語句添加多個列表元素:

rpush key_philosophy1 "-" "Rene" "Decartes"

lpushxrpushx命令也用於元素添加到列表中,但如果給定的名單已經存在只會工作。如果任何一個命令失敗,它將返回(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列表,您需要刪除該密鑰並使用lpushor 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數據庫的系列教程。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM