redis資料型別之列表型別總結

2021-08-20 18:41:31 字數 1773 閱讀 1099

1.定義:可以儲存乙個有序的字串列表,常用操作為向列表倆端新增元素,獲取列表中的某一段,內部採用雙向鍊錶,

所以向列表倆端新增元素的時間複雜度為o1,獲取越接近倆端的資料越快,但是通過索引訪問元素慢,所以我們獲取

不受已有資料的影響

2.特點:最多存放2的32次方-1個元素,元素是有序的,元素可重複

3.缺點:隨著資料量的增加,訪問中間元素的速度會很慢,不能調整元素的位置

4.常用命令:

(1)列表倆頭新增資料:lpush key value從列表左邊增加元素,lpush num 1,lpush num 2 3結果為3 2 1,

rpush從列表右邊增加元素,rpush 0 -1結果為3 2 1 0 -1

(2)列表倆頭彈出資料:這個操作完成倆步,移除元素,同時返回該元素lpop從左側彈出元素,lpop  num,結果為3;

rpop num結果為-1

(3)可以模擬棧(先進後出),佇列(先進先出):棧:lpush和lpop或則rpush和rpop;佇列:lpush和rpop或rpush和lpop

(4)獲取列表元素格式:llen key llen num結果為:3,比sql語句獲取要快很多

(5)獲取列表每個片段:lrange key start stop,包含倆端元素,如:lrange num 0 2結果為2 1 0,lrange支援負索引,-1

為最右邊元素,所以lrange -1 0返回列表中所有的元素

(6)刪除列表中指定的值:lrem key count value

當count>0從左邊刪除count個值為value的資料

當count<0從右邊刪除count個值為value的資料

當count=0刪除所有值為value的元素

2 1 0 2執行lrem num -1 2結果為:2 1 0

(7)獲取列表中指定索引處的值:lindex key 索引位置

(8)設定列表指定索引出的值:lset key 索引的位置值

(9)保留列表指定片段:ltrim key start end

(10)ltrim和lpush一起使用用來限制元素的數量,如果我們希望保留最新的多少條資料時,我們每一

lpush後我們都呼叫一次ltrim

(11)向列表中插入元素:linsert key before|after 要查詢的值 具體插入的值如:linsert test before 0 1 

在列表0前插入1

(12)rpoplpush source destination:從source列表的右側彈出乙個元素,並加入到destination列表的座標,

如果當我們吧列表當做乙個佇列來使用時,可以實現多個佇列中傳遞資料,如果source,destination相同時,

同時還可以放入新的**

4.應用場景:

(1)可以實現分頁查詢,思路為我們將所有的id存放在列表中,具體的內容我們用雜湊存放,新增時我們可以通過

lpush將新的id將如何列表,當刪除時我們我們可以用lrem將其從列表移除,到時我們通過lrange獲取指定片段的資料,

開始片段的計算為start=(currentpage-1)*pagesize,end=currentpage*pagesize-1,然後遍歷列表使用hgetall id,

獲取具體的內容,但是這種做法是有缺點的,我們每次獲取一條資料都需要連線庫,並且如果修改時間可以進行了修改,

我們的資料還需要重新排隊,如果資料量巨大中間資料的查詢會很慢,所以這種做法適合如果我們的修改時間不可變,

數量量不是特別的大的情況

(2)適合做新鮮事,日誌很少訪問中間元素的內容

redis 資料型別之列表

1 lpush lpush name,values 在name對應的list中新增元素,每個新的元素都新增到列表的最左邊 如 conn.lpush oo 11,22,33 儲存順序為 33,22,11 擴充套件 rpush name,values 表示從右向左操作 2 lpushx lpushx n...

Redis資料型別之列表型別 Redis系列四

可以儲存有序的字串列表,常用的操作是向列表兩端新增元素,或者獲得列表的某乙個片段。列表型別是使用雙向鍊錶實現的,新增元素時間複雜度為o 1 查詢代價高 常用命令 lpush key value value.從左端新增 rpush key value value.從右端新增 彈出後資料將從列表中刪除 ...

資料型別之列表

一 列表簡介 序列是python中最基本的資料結構。序列中的每個元素都索引,第乙個索引是0,以逗號作為分割符。二 列表的方法 0 建立列表 names a b c d e names a b c d e 2 刪除 pop,remove,del 1 pop names.pop e 如果沒有指定下標,則...