Redis中List型別常用的命令

2021-08-20 19:44:21 字數 2164 閱讀 1559

乙個列表項可以包含乙個或者多個數量的項,每個項可以按照它們被推入到列表的位置來排列。

每個列表項所處的位置都決定了這個項的索引值,索引以0位開始,從列表的左端到右端依次遞增,位於列表最左端的項的索引為0,而位於列表最右端的項的索引為n-1,其中n為列表的長度。

列表包含的項可以出現重複,它們不必是唯一的。

lpush key value [value ...]

將乙個或者是多個值依次推入到列表的左端,命名返回新值被推入後,列表目前所包含的項數量。

複雜度為o(n),其中n為被推入值的數量,如果只有乙個值,那麼這個命令的複雜度為o(1)。

rpush key value [value ...]

將乙個或以上數量的值依次推入到列表的右端,命令返回新值被推入之後,列表目前包含的項數量。

複雜度為o(n) ,其中 n 為被推入的數量,如果只推入乙個值,那麼命令的複雜度 o(1) 。

lpop key

移除並返回列表最左端的項,複雜度為o(1)。

rpop key

移除並返回列表最右端的項,複雜度是o(1)。

llen key

返回列表鍵 key 長度,也即是,返回列表包含的列表項數量。因為redis 會記錄每個列表的長度,所以這個命令無須遍歷列表,它的複雜為 o(1)。

lindex key index

返回列表鍵 key 中,指定索引 index 上的列表項。index 索引可以是正數或者負數。複雜度為o(n) ,n 列表的長度。

lrange key start stop

返回列表鍵key 中,從索引start 至索引stop 範圍內的所有列表。兩個索引引數都可以是正數或負數。複雜度為 o(n) n 為被返回的列表項數量。

lset key index

value

將列表鍵key 索引 index 上的列表項設定為value ,設定成功時命令返回 ok 。如果 index 引數超過了列表的索引範圍,那麼命令返回乙個錯誤。針對表頭和表尾節點進行處理時(index 為 0 或者 -1),命令的複雜度為 o(1) ;其他情況下,命令的複雜度為 o(n) ,n 為列表的長度。

linsert key before|after pivot value

根據命令呼叫時傳遞的是 before 選項還是 after 選項,將值 value 插入到指定列表項 pivot 的之前或者之後。當 pivot 不存在於列表 key 時,不執行任何操作。返回 -1 pivot 不存在;返回 0 表示鍵key 不存在;插入成功時則返回列表當前的長度。複雜度為o(n) ,n 為列表長度。

lrem key count

value

根據引數 count 的值,移除列表中與引數 value 相等的列表項:

•如果 count > 0 ,那麼從表頭開始向表尾搜尋,移除最多count 個值為value 的列表項。

•如果 count

< 0 ,那麼從表尾開始向表頭搜尋,移除最多 abs(count) 個值為value 的列表項。

•如果 count = 0 ,那麼移除列表中所有值為 value 的列表項。

命令返回被移除列表項的數量。命令的複雜度為 o(n) ,n 為列表的長度。

ltrim key start stop

對乙個列表進行修剪(trim),讓列表只保留指定索引範圍內的列表項,而將不在範圍內的其他列表項全部刪除。兩個索引都可以是正數或者負數。命令執行成功時返回 ok ,複雜度為 o(n) ,n為被移除列表項的數量。

blpop key [key ...] timeout

lpop 命令的阻塞版本;命令會以從左到右的順序,訪問給定的各個列表,並彈出首個非空列表最左端的項;如果所有給定列表都為空,那麼客戶端將被阻塞,直到等待超時,或者有可彈出的項出現為止;設定引數為 0 表示永遠阻塞。

複雜度為o(n),n為輸入列表的數量。

brpop key [key ...] timeout

rpop 命令的阻塞版本:命令會以從左到右的順序,訪問給定的各個列表,並彈出首個非空列表最右端的項;如果所有給定列表都為空,那麼客戶端將被阻塞,直到等待超時,或者有可彈出的項出現為止;設定 timeout 引數為 0 表示永遠阻塞。

複雜度為o(n),n為輸入列表的數量。

Redis中List儲存型別

在redis中,list型別是按照插入的順序排序的字串鍊錶。和資料結構中的普通鍊錶一樣,可以在其頭部 left 和尾部 right 新增新的元素。在插入元素時,如果該鍵不存在,redis將為該鍵建立乙個新的鍊錶。如果鍊錶中所有的元素均被移除,那麼該鍵也會從資料庫中刪除。從元素的插入和刪除效率的角度來...

redis中list型別及操作

在key對應list的頭部新增字串元素 lpush mylist world integer 1 lpush mylist hello integer 2 lrange mylist 0 1 1 hello 2 world 在key對應list的尾部新增字串元素 在key對應list的特定位置之前或...

Redis的常用命令 list型別

在redis中,list型別是按照插入順序排序的字串鍊錶。和資料結構中的普通鍊錶一樣,我們可以在其頭部 left 和尾部 right 新增新的元素。在插入時,如果該鍵並不存在,redis將為該鍵建立乙個新的鍊錶。與此相反,如果鍊錶中所有的元素均被移 除,那麼該鍵也將會被從資料庫中刪除。list中可以...