redis學習之列表

2021-09-26 22:00:40 字數 1101 閱讀 7648

redis 列表是簡單的字串佇列,可以在列表頭部與尾部推入字串,其操作時間複雜度為常數級o(1),速度非常快。而且是按照推入的順序排序,每個redis列表最少可以包含40億個字串。壞訊息是訪問列表裡的元素效率不高,因為會遍歷列表匹配,其時間複雜度為o(n),很難想象遍歷乙個超大列表會帶來什麼後果,如果需要快速的訪問元素,建議使用redis有序集合。

redis 列表基於linked lists實現的,這意味著如果要查詢列表中的元素,就會遍歷列表,而不是像雜湊表一樣直接通過鍵名找到對應的值(對映關係),雜湊表查詢的時間複雜度為o(1)常數級,而redis 列表查詢的時間複雜度為o(n),所以對於超大列表,查詢效率非常低且開銷也很大。

目錄

推入與彈出元素

查詢列表

刪除元素

插入元素

修改元素的值 擷取

阻塞操作

一些經典應用場景

redis 在把元素推入乙個list時,如果list不存在則會自動建立;

redis 在把元素彈出乙個list時,如果值仍然是空的,則list會自動銷毀;

redis 列表經常用來做佇列,會有這樣乙個場景:某系統會一直查詢佇列是否需要進行操作,一般這樣的查詢是乙個死迴圈,那麼當這個隊列為空時,系統就會快速迴圈訪問redis就是造成很大的壓力,解決這個問題的辦法就是阻塞,當問詢是否有元素而隊列為空時就會阻塞,直到佇列有新的元素加入或阻塞超時。

1. 訊息佇列中介軟體

使用redis列表作為訊息佇列中介軟體有很大的優勢,推入和彈出元素簡單且快速,並能保證有序執行。有序執行有好處也有壞處,壞處就是不能優先執行,例如vip應該是優先處理的,針對這一情況可以設定多個redis列表,把vip單獨放乙個佇列,系統先處理vip佇列。

2. 排行榜,今日推薦等簡單列表應用

lrange 命令能實現快速的分頁,但列表的元素只是字串,能儲存的資料有限,所以一些簡單列表非常適合使用redis列表來儲存。

系統計算出每月的排行榜,然後把排行榜用redis佇列儲存起來,使用者檢視排行榜也會很方便。

每日推薦可能是乙個臨時的列表,並不需要永久儲存,使用redis佇列來儲存推薦列表並設定過期,也是很方便的。

redis實戰 Redis命令之列表

列表的主要優點在於它可以包含多個字串值,使得使用者可以將資料集中在同乙個地方。redis允許使用者從序列的兩端推入或者彈出元素,獲取列表元素,以及執行各種常見的列表操作。命令用例 描述注意 rpush rpush key value value 從右端推入乙個或多個值 多個值用空格隔開 lpush ...

CSS學習之 列表

1 列表型別 語法 li 屬性值列表值描述 none 無標記。disc 預設。標記是實心圓。circle 標記是空心圓。square 標記是實心方塊。decimal 標記是數字。decimal leading zero 0開頭的數字標記。01,02,03,等。lower roman 小寫羅馬數字 i...

Python學習之列表

python學習之列表 之前一直對python中建立陣列型別比較矇圈,今天仔細整理加實踐了一下,代如下 建立二維列表 n int input 建立二維列表是不是只能建立列元素一樣的 將列表中的位置都賦值 list 0 2 n 1 for i in range n print list 建立空列表 l...