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

来源:https://www.cnblogs.com/daichangya/archive/2020/05/17/12903676.html
-Advertisement-
Play Games

1. "如何在ubuntu18.04上安裝和保護redis" 2. "如何連接到Redis資料庫" 3. "如何管理Redis資料庫和Keys" 4. "如何在Redis中管理副本和客戶端" 5. "如何在Redis中管理字元串" 6. "如何在Redis中管理list" 7. "如何在Redis中 ...


  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資料庫的系列教程。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • --列轉行小實例 --創建測試表 if object_id(N'test', N'U') is not null drop table test go with UnPivotTable as ( select 1 as UserNO, '33' as A, '44' AS B, '55' as C ...
  • [在Docker中使用Redis] [Redis Cli] [命令的返回值類型] [Redis中的多資料庫] [基礎命令] Redis是REmote DIctionary Server(遠程字典伺服器)的縮寫,它以字典結構存儲數據,並允許其他應用通過TCP協議讀寫字典中的內容。 Redis資料庫中的 ...
  • 除了RDB持久化功能之外,Redis還提供了AOF持久化功能。與RDB持久化通過保存資料庫中的鍵值對來記錄資料庫狀態不同,AOF持久化是通過保存Redis伺服器所執行的寫命令來記錄資料庫狀態的。 伺服器在啟動時,可以通過載入和執行AOF文件中保存的命令來還原伺服器關閉前的資料庫狀態。 AOF持久化功 ...
  • MySQL 5.7.26 二進位版本安裝(免安裝綠色版) 下載地址 https://downloads.mysql.com/archives/community/ https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.26-linux-glibc2.1 ...
  • 今天使用新創建的用戶登錄mysql時被提示 Access denied for user '-Mike'@'localhost' (using password: YES) 操作步驟: 成功!!!(雖然不知道為啥) 有無野生大佬給解答一下 ...
  • Redis是記憶體資料庫,它將自己的資料庫狀態存儲在記憶體裡面,所以如果不想辦法將存儲在記憶體中的資料庫狀態保存到磁碟,那麼伺服器 進程一旦退出,伺服器中的資料庫狀態也會消失不見。 為瞭解決這個問題,Redis提供了RDB持久化功能,這個功能可以將資料庫狀態保存到磁碟裡面 1、RDB文件的創建與載入 Re ...
  • 1、下載Navicat Premium Navicat15鏈接:http://www.navicat.com.cn/download/navicat-premium,選擇相應版本,這裡選擇window 64位。 2、安裝客戶端沒啥好說的,直接省略。 3、下載激活軟體, 無需斷網運行激活軟體Navic ...
  • 近段時間發現公司的HDP大數據平臺的tez-ui頁面不能用了,頁面顯示為空,導致通過hive提交的sql不能方便地查找到Yarn上對應的applicationId,只能通過beeline的屏幕輸出信息、hiveserver2的日誌、yarn的日誌等一步步去查找,非常麻煩(查找方法見上一篇博客“如何找 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...