Redis資料結構之列表list

2022-02-07 19:28:44 字數 3882 閱讀 9877

列表型別用來儲存多個有序字串,可以從兩端進行插入(push)和彈出(pop)操作,獲取指定範圍的元素列表,獲取指定索引的元素等

lpush:從左邊插入元素

lpush key value1 value2 ...
rpush:從右邊插入元素

rpush key value1 value2 ...
linsert:在某個元素前或後插入元素,返回列表長度

linsert key before|after pivot value
d元素前新增e元素

127.0.0.1:6379[2]> rpush list a b c d

(integer) 4

127.0.0.1:6379[2]> linsert list before d e

(integer) 5

127.0.0.1:6379[2]> lrange list 0 -1

1) "a"

2) "b"

3) "c"

4) "e"

5) "d"

lrange:獲取指定範圍的元素列表

索引從0開始,最後乙個元素的索引為-1

lrange key start end
獲取全部元素:

lrange key 0 -1
lindex:獲取指定索引下標的元素

lindex key index
獲取最後乙個元素:

lindex key -1
llen:獲取列表長度

llen key
lpop:從左側彈出元素(刪除並返回)

lpop key
127.0.0.1:6379[2]> lrange list 0 -1

1) "a"

2) "b"

3) "c"

4) "e"

5) "d"

127.0.0.1:6379[2]> lpop list

"a"127.0.0.1:6379[2]> lrange list 0 -1

1) "b"

2) "c"

3) "e"

4) "d"

rpop:從右側彈出元素(刪除並返回)

rpop key
lrem:刪除指定元素

lrem key count value
lrem會從列表中找到value元素進行刪除,根據count分為三種情況:

除了lpop和rpop兩個彈出命令外,還有兩個彈出命令,叫做阻塞彈出,分別是blpopbrpop

blpop:規定時間內獲取並移除資料,timeout:單位為秒

blpop key timeout
如果列表不為空,就立刻返回列表和彈出的元素

127.0.0.1:6379[2]> blpop list 10

"list"

"a"

如果列表為空,就阻塞timeout長時間,如果指定時間內其他客戶端沒有新增元素就返回nil,如果指定時間內其他客戶端新增了元素,就返回列表和彈出的元素

127.0.0.1:6379[2]> blpop list 10

(nil)

(10.05s)

lset:修改指定索引下標的元素

lset key index newvalue
修改列表索引為0的元素為b:

127.0.0.1:6379[2]> lrange list 0 -1

1) "c"

2) "f"

3) "e"

127.0.0.1:6379[2]> lset list 0 b

ok127.0.0.1:6379[2]> lrange list 0 -1

1) "b"

2) "f"

3) "e"

列表型別內部有2種編碼

可以使用object encoding key檢視當前編碼

當元素小於521個,且元素值小於64位元組

127.0.0.1:6379> rpush listkey e1 e2 e3

(integer) 3

127.0.0.1:6379> object encoding listkey

"ziplist"

當元素大於521個

27.0.0.1:6379> rpush listkey e4 e5 ... e512 e513

(integer) 513

127.0.0.1:6379> object encoding listkey

"linkedlist"

redis3.2版本提供了quicklist內部編碼,簡單地說它是以乙個ziplist節點linkedlist,它結合了ziplistlinkedlist兩者的優勢,為列表型別提供了一種更為優秀的內部編碼實現

通過lpushbrpop可以實現訊息佇列,生產方通過lpush新增元素,多個消費方通過brpop獲取元素

通過lpushlpop可以實現棧

通過lrange可以實現列表的分頁功能

資料結構之列表

在基礎資料結構中,列表作為最為基礎的乙個資料結構進行體現,在乙個程式中決定效率的關鍵核心因素就是資料結構和資料演算法,二者共同決定 時間複雜度的型別,因此萬丈高樓平地起,就從最基礎的列表操作和分析其時間複雜度開始 方法1 列表賦值 lis 方法2 列表疊加 列表疊加要注意,疊加的是可迭代物件 新增列...

python資料結構之列表

和字串一樣,列表也是python中使用最普遍的資料結構之一,而且它很靈活,可以儲存多種不同的物件 數字,字串,甚至於其他的列表。列表的建立方法 1 利用python的內建方法list l1 list python l1 p y t h o n 2 直接賦值給方括號,元素之間用逗號隔開 l2 1,2,...

python資料結構之列表

null list int list 1 2,3 str list a b c int str list 1 2,a b int list 1 2,3 int list 4 out 1,2,3,1,2,3,1,2,3,1,2,3 一種是利用 操作符 int list 1 2,3 str list a...