1. 程式人生 > 其它 >redis中設定獲取值--列表

redis中設定獲取值--列表

列表

一個列表可以包含一個或以上數量的 項(item),每個項按照它們被推入到列表的位置來排列。 每個列表項所處的位置決定了這個項的索引值(index),索引以 0 為開始,從列表的左端到右端依次 遞 增,位於列表最左端(表 頭)的項的索引為 0 ,而位於列表最右端(表尾)的 項的索引為 N-1 ,其中 N 為 列表的長度。 列表包含的項可以出現重複,它們不必是唯一的。

1,從列表左端推入值 lpush key "one" "two""three" 返回 列表當前項數量

列表值現狀:"three" "two" "one"

2,從列表右端推入值 rpush key "one" "two""three" 返回 列表當前項數量

列表值現狀:"one" "two""three"

3,從列表左端彈出值 lpop key 彈出最左端的值,並返回被彈出的值

4,從列表右端彈出值 rpop key 彈出最右端的值,並返回被彈出的值

5,獲取列表的長度 llen key

6,獲取指定索引位置上的項 lindex key index

rpush key "one" "two""three"

lindex key 1;---返回"two"

lindex key -1;---返回"three"

7,獲取指定索引內的值 lrange key start stop

"one" "two""three" "four" "five""six"

lrange key 0 2;---返回"one" "two""three"

8,設定指定索引上的列表項 lset key index value

"one" "two""three" "four" "five""six"

lset key 1 "ten"; ---返回 OK 列表狀態"one" "ten""three" "four" "five""six"

9,在指定位置插入列表項 linsert key before/after pivot value 返回當前列表長度

"one" "two""three" "four" "five""six"

linsert key before "three" "night"; ---返回 7 列表狀態"one" "two" "night" "three" "four" "five""six"

10,從列表中刪除指定的值 lrem key count value 返回被移除列表項的數量

根據count值,刪除列表內的值

1)count > 0;索引從0開始,刪除值是value的項,count個

2)count == 0;刪除值是value的所有項

3)count < 0;索引從-1開始,刪除值是value的項,abs(count)個

11,修剪列表 ltrim key start stop ,只保留索引範圍內的項,其他的刪除。倆個索引都可以是整數或負數 返回 OK

12,阻塞彈出命令

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

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

BLPOP/BRPOP 的先到先服務原則 如果有多個客戶端同時因為某個列表而被阻塞,那麼當有新 值被推入到這個列表時,伺服器會按照先到 先服務(first in first service)原則,優先向最早被阻塞的客戶端返回新值。 舉個例子,假設列表 lst 為空,那麼當客戶端 X 執行命令 BLPOP lst timeout 時,客戶端 X 將被阻塞。 在此之後,客戶端 Y 也執行命令 BLPOP lst timeout ,也因此被阻塞。 如果這時,客戶端 Z 執行命令 RPUSH lst "hello" ,將值 "hello" 推入列表 lst ,那麼這個 "hello" 將被返回 給客戶端 X ,而不是客戶端 Y ,因為客戶端 X 的被阻塞時間要早於客戶端 Y 的被阻塞時間。

本文來自部落格園,作者:昊昋,轉載請註明原文連結:https://www.cnblogs.com/hbaook-geui/p/15630532.html