目錄
list清單簡介
常用指令
新增指令
查詢指令
彈出/刪除指令
修改指令
阻塞彈出指令
應用程式場景
首頁 資料庫 Redis redis的list資料型別相關指令分析及如何使用

redis的list資料型別相關指令分析及如何使用

May 28, 2023 am 09:32 AM
redis list

    list清單簡介

    • list是依照插入順序排序的字串陣列(說通俗點,仍然儲存字串)。你可以加一個元素到列表的頭部(左邊)或尾部(右邊),個列表最多可以包含^32-1個元素(每個列表超過40億個元素)。

    • Redis中的list和Java中的LinkedList很像,底層都是一種鍊錶結構,list的插入和刪除操作非常快,時間複雜度為0(1),不像數組結構插入、刪除操作需要移動資料。儘管表面上仍然是列表,但Redis中的列表底層實作並不僅限於簡單的雙向鍊錶。

    • 當資料量較少的時候它的底層儲存結構為一塊連續內存,稱之為ziplist(壓縮列表),它將所有的元素緊挨著一起存儲,分配的是一塊連續的記憶體;當資料量較多的時候將會變成quicklist(快速鍊錶)結構。

    • 可單純的鍊錶也是有缺陷的,鍊錶的前後指標prev和next會佔用較多的內存,會比較浪費空間,而且會加重記憶體的碎片化。自Redis 3.2之後,Redis使用混合資料結構quicklist(快速鍊錶),該結構由ziplist和鍊錶組成。

    常用指令

    新增指令

    #lpush key 值

    從左邊插入元素(將一個或多個值插入到列表頭)

    127.0.0.1:6379> lpush ids 1
    (integer) 1
    127.0.0.1:6379> lrange ids 0 -1
    1) "1"
    127.0.0.1:6379> lpush ids 2
    (integer) 2
    127.0.0.1:6379> lrange ids 0 -1
    1) "2"
    2) "1"
    登入後複製

    rpush key value

    從右邊插入元素(將一個或多個值插入到列表的尾部(最右邊))

    127.0.0.1:6379> rpush ids 3
    (integer) 3
    127.0.0.1:6379> lrange ids 0 -1
    1) "2"
    2) "1"
    3) "3"
    登入後複製

    linsert key BEFORE|AFTER pivot value
    向某個元素前/後插入元素,傳回結果為目前清單長度,注意清單不存在或指定元素不存在清單中時,都將不執行任何操作。

    //元素3前插入0
    127.0.0.1:6379> linsert ids before 3 0
    (integer) 4
    127.0.0.1:6379> lrange ids 0 -1
    1) "2"
    2) "1"
    3) "0"
    4) "3"
    //元素3后插入0
    127.0.0.1:6379> linsert ids after 3 4
    (integer) 5
    127.0.0.1:6379> lrange ids 0 -1
    1) "2"
    2) "1"
    3) "0"
    4) "3"
    5) "4"
    登入後複製

    查詢指令

    lrange key start end
    取得清單中指定範圍內的元素清單;若start值大於清單end值則傳回空清單
    如上已經展示過了

    lindex key index
    取得清單指定索引下標的元素

    127.0.0.1:6379> lindex ids 0
    "2"
    127.0.0.1:6379> lindex ids -1
    "4"
    登入後複製

    llen key
    #取得清單長度;清單不存在則傳回0

    127.0.0.1:6379> llen ids
    (integer) 5
    登入後複製

    彈出/刪除指令

    #lpop key
    從清單左側彈出元素並傳回頭部元素

    127.0.0.1:6379> lpop ids
    "2"
    127.0.0.1:6379> lrange ids 0 -1
    1) "1"
    2) "0"
    3) "3"
    4) "4"
    登入後複製

    rpop key
    從清單右側彈出元素並返回尾部元素

    127.0.0.1:6379> rpop ids
    "4"
    127.0.0.1:6379> lrange ids 0 -1
    1) "1"
    2) "0"
    3) "3"
    登入後複製

    lrem key count value
    #從清單中找到等於value的元素進行刪除,依count的不同分為三種情況:
    count > 0,從表頭開始向表尾,移除數量為count個元素;
    count < 0,從表尾開始向表頭,移除數量為count的絕對值個元素;
    count = 0,移除表中所有與value 相等的值

    127.0.0.1:6379> lrem ids 0 3
    (integer) 1
    127.0.0.1:6379> lrange ids 0 -1
    1) "1"
    2) "0"
    登入後複製

    ltrim key start end
    對一個清單進行修剪(trim),就是說,讓清單只保留指定區間內的元素,不在指定區間之內的元素都會被刪除

    127.0.0.1:6379> ltrim ids 0 0
    OK
    127.0.0.1:6379> lrange ids 0 -1
    1) "1"
    登入後複製

    修改指令

    lset key index value
    修改指定下標的元素的值設定為value

    127.0.0.1:6379> lset ids 0 0
    OK
    127.0.0.1:6379> lrange ids 0 -1
    1) "0"
    登入後複製

    阻塞彈出指令

    blpop key [key …] timeout
    移出並取得清單的第一個元素, 如果清單沒有元素會阻塞清單直到等待逾時(單位秒)或發現可彈出元素為止

    brpop key [key …] timeout
    移出並取得清單的最後一個元素, 如果清單沒有元素會阻塞清單直到等待逾時或發現可彈出元素為止
    示範:
    開啟三個reids連線窗口,第一個執行blpop ,第二個執行brpop ,第三個執行新增:
    可以看到視窗1和2執行完都已經阻塞在這裡,這是因為ids中沒有元素

    redis的list資料型別相關指令分析及如何使用

    redis的list資料型別相關指令分析及如何使用

    視窗3執行新增:lpush ids 1 2 3 4 5 6
    可以看到視窗1和2立即彈出對應元素:

    redis的list資料型別相關指令分析及如何使用

    redis的list資料型別相關指令分析及如何使用

    應用程式場景

    訊息佇列:lpop和rpush(或反過來,lpush和rpop)能實現佇列的功能

    朋友圈的讚列表、評論列表、排行榜:lpush指令和lrange指令能實現最新列表的功能,每次透過lpush指令往列表裡插入新的元素,然後透過lrange指令讀取最新的元素列表。

    以上是redis的list資料型別相關指令分析及如何使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

    熱AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅動的應用程序,用於創建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Clothoff.io

    Clothoff.io

    AI脫衣器

    Video Face Swap

    Video Face Swap

    使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

    熱工具

    記事本++7.3.1

    記事本++7.3.1

    好用且免費的程式碼編輯器

    SublimeText3漢化版

    SublimeText3漢化版

    中文版,非常好用

    禪工作室 13.0.1

    禪工作室 13.0.1

    強大的PHP整合開發環境

    Dreamweaver CS6

    Dreamweaver CS6

    視覺化網頁開發工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級程式碼編輯軟體(SublimeText3)

    redis集群模式怎麼搭建 redis集群模式怎麼搭建 Apr 10, 2025 pm 10:15 PM

    Redis集群模式通過分片將Redis實例部署到多個服務器,提高可擴展性和可用性。搭建步驟如下:創建奇數個Redis實例,端口不同;創建3個sentinel實例,監控Redis實例並進行故障轉移;配置sentinel配置文件,添加監控Redis實例信息和故障轉移設置;配置Redis實例配置文件,啟用集群模式並指定集群信息文件路徑;創建nodes.conf文件,包含各Redis實例的信息;啟動集群,執行create命令創建集群並指定副本數量;登錄集群執行CLUSTER INFO命令驗證集群狀態;使

    redis數據怎麼清空 redis數據怎麼清空 Apr 10, 2025 pm 10:06 PM

    如何清空 Redis 數據:使用 FLUSHALL 命令清除所有鍵值。使用 FLUSHDB 命令清除當前選定數據庫的鍵值。使用 SELECT 切換數據庫,再使用 FLUSHDB 清除多個數據庫。使用 DEL 命令刪除特定鍵。使用 redis-cli 工具清空數據。

    redis怎麼讀取隊列 redis怎麼讀取隊列 Apr 10, 2025 pm 10:12 PM

    要從 Redis 讀取隊列,需要獲取隊列名稱、使用 LPOP 命令讀取元素,並處理空隊列。具體步驟如下:獲取隊列名稱:以 "queue:" 前綴命名,如 "queue:my-queue"。使用 LPOP 命令:從隊列頭部彈出元素並返回其值,如 LPOP queue:my-queue。處理空隊列:如果隊列為空,LPOP 返回 nil,可先檢查隊列是否存在再讀取元素。

    redis指令怎麼用 redis指令怎麼用 Apr 10, 2025 pm 08:45 PM

    使用 Redis 指令需要以下步驟:打開 Redis 客戶端。輸入指令(動詞 鍵 值)。提供所需參數(因指令而異)。按 Enter 執行指令。 Redis 返迴響應,指示操作結果(通常為 OK 或 -ERR)。

    centos redis如何配置Lua腳本執行時間 centos redis如何配置Lua腳本執行時間 Apr 14, 2025 pm 02:12 PM

    在CentOS系統上,您可以通過修改Redis配置文件或使用Redis命令來限制Lua腳本的執行時間,從而防止惡意腳本佔用過多資源。方法一:修改Redis配置文件定位Redis配置文件:Redis配置文件通常位於/etc/redis/redis.conf。編輯配置文件:使用文本編輯器(例如vi或nano)打開配置文件:sudovi/etc/redis/redis.conf設置Lua腳本執行時間限制:在配置文件中添加或修改以下行,設置Lua腳本的最大執行時間(單位:毫秒)

    redis怎麼使用鎖 redis怎麼使用鎖 Apr 10, 2025 pm 08:39 PM

    使用Redis進行鎖操作需要通過SETNX命令獲取鎖,然後使用EXPIRE命令設置過期時間。具體步驟為:(1) 使用SETNX命令嘗試設置一個鍵值對;(2) 使用EXPIRE命令為鎖設置過期時間;(3) 當不再需要鎖時,使用DEL命令刪除該鎖。

    redis命令行怎麼用 redis命令行怎麼用 Apr 10, 2025 pm 10:18 PM

    使用 Redis 命令行工具 (redis-cli) 可通過以下步驟管理和操作 Redis:連接到服務器,指定地址和端口。使用命令名稱和參數向服務器發送命令。使用 HELP 命令查看特定命令的幫助信息。使用 QUIT 命令退出命令行工具。

    redis過期策略怎麼設置 redis過期策略怎麼設置 Apr 10, 2025 pm 10:03 PM

    Redis數據過期策略有兩種:定期刪除:定期掃描刪除過期鍵,可通過 expired-time-cap-remove-count、expired-time-cap-remove-delay 參數設置。惰性刪除:僅在讀取或寫入鍵時檢查刪除過期鍵,可通過 lazyfree-lazy-eviction、lazyfree-lazy-expire、lazyfree-lazy-user-del 參數設置。

    See all articles