實戰:通過示例代碼聊聊Redis中的list命令

本篇文章給大家介紹一下redis中的list命令,通過代碼示例了解一下list命令的用法,希望對大家有所幫助!

實戰:通過示例代碼聊聊Redis中的list命令

list的數據結構

List類型是一個雙端鏈表的結構,容量是2的32次方減1個元素,即40多億個;其主要功能有push、pop、獲取元素等;一般應用在棧、隊列、消息隊列等場景。【相關推薦:Redis視頻教程

redis list命令實戰

[l/r]push-左/右添加元素

語法:[l/r]push key value [value …]

以頭插或尾插方式插入指定key隊列中一個或多個元素

127.0.0.1:6379>?lpush?pushkey?1?2?3 (integer)?3 127.0.0.1:6379>?lpush?pushkey?4 (integer)?4 127.0.0.1:6379>?rpush?pushkey?5 (integer)?5 127.0.0.1:6379>?lrange?pushkey?0?-1 1)?"4" 2)?"3" 3)?"2" 4)?"1" 5)?"5"

lrange-查詢范圍元素

語法: lrange key start stop

獲取列表指定范圍內的元素

127.0.0.1:6379>?lpush?products?1?2?3 (integer)?3 127.0.0.1:6379>?lpush?products?4?5?6 (integer)?6 127.0.0.1:6379>?lrange?products?0?-1 1)?"6" 2)?"5" 3)?"4" 4)?"3" 5)?"2" 6)?"1"

linsert-在某元素前后插入元素

語法:linsert key BEFORE|AFTER pivot value

在列表的元素前或者后插入元素

127.0.0.1:6379>?lrange?products?0?-1 1)?"6" 2)?"5" 3)?"4" 4)?"3" 5)?"2" 6)?"1" 127.0.0.1:6379>?linsert?products?before?5?a (integer)?7 127.0.0.1:6379>?lrange?products?0?-1 1)?"6" 2)?"a" 3)?"5" 4)?"4" 5)?"3" 6)?"2" 7)?"1" 127.0.0.1:6379>?linsert?products?after?a?b (integer)?8 127.0.0.1:6379>?lrange?products?0?-1 1)?"6" 2)?"a" 3)?"b" 4)?"5" 5)?"4" 6)?"3" 7)?"2" 8)?"1"

llen-獲取長度

語法:llen ?key

獲取列表長度

127.0.0.1:6379>?lrange?products?0?-1 1)?"6" 2)?"a" 3)?"b" 4)?"5" 5)?"4" 6)?"3" 7)?"2" 8)?"1" 127.0.0.1:6379>?llen?products (integer)?8

lindex-根據下標獲取元素

語法:lindex key index

通過索引獲取列表中的元素

127.0.0.1:6379>?lrange?products?0?-1 1)?"6" 2)?"a" 3)?"b" 4)?"5" 5)?"4" 6)?"3" 7)?"2" 8)?"1" 127.0.0.1:6379>?lindex?products?2 "b"

lset-根據下標設置值

語法:lset key index value

通過索引設置列表元素的值

127.0.0.1:6379>?lrange?products?0?-1 1)?"6" 2)?"a" 3)?"b" 4)?"5" 5)?"4" 6)?"3" 7)?"2" 8)?"1" 127.0.0.1:6379>?lset?products?2?B OK 127.0.0.1:6379>?lrange?products?0?-1 1)?"6" 2)?"a" 3)?"B" 4)?"5" 5)?"4" 6)?"3" 7)?"2" 8)?"1"

ltrim-截取元素

語法:ltrim key start end

截取隊列指定區間的元素,其余元素都刪除

127.0.0.1:6379>?lrange?products?0?-1 1)?"6" 2)?"a" 3)?"B" 4)?"5" 5)?"4" 6)?"3" 7)?"2" 8)?"1" 127.0.0.1:6379>?ltrim?products?0?3 OK 127.0.0.1:6379>?lrange?products?0?-1 1)?"6" 2)?"a" 3)?"B" 4)?"5"

lrem-移除元素

語法:lrem key count value

移除列表元素

127.0.0.1:6379>?lpush?test?a?1?a?2?a?3?a?4??5?6 (integer)?10 127.0.0.1:6379>?lrange??test?0?-1 ?1)?"6" ?2)?"5" ?3)?"4" ?4)?"a" ?5)?"3" ?6)?"a" ?7)?"2" ?8)?"a" ?9)?"1" 10)?"a" 127.0.0.1:6379>?lrem?test?3?a (integer)?4 127.0.0.1:6379>?lrange??test?0?-1 1)?"6" 2)?"5" 3)?"4" 4)?"3" 5)?"2" 6)?"1" 7)?"a"

[l/r]pop-從左/右彈出元素

語法:[l/r]pop key

從隊列的頭或尾彈出節點元素(返回該元素并從隊列中刪除)

127.0.0.1:6379>?lrange??test?0?-1 1)?"6" 2)?"5" 3)?"4" 4)?"3" 5)?"2" 6)?"1" 127.0.0.1:6379>?lpop?test "6" 127.0.0.1:6379>?lrange??test?0?-1 1)?"5" 2)?"4" 3)?"3" 4)?"2" 5)?"1" 127.0.0.1:6379>?rpop?test "1" 127.0.0.1:6379>?lrange??test?0?-1 1)?"5" 2)?"4" 3)?"3" 4)?"2"

rpoplpush-移除右元素添加到另一列表左

語法:rpoplpush source destination

移除列表的最后一個元素(右),并將該元素添加到另一個列表(左)并返回

127.0.0.1:6379>?lpush?src?1?2?3 (integer)?3 127.0.0.1:6379>?lrange?src?0?-1 1)?"3" 2)?"2" 3)?"1" 127.0.0.1:6379>?lpush?dst?a?b?c (integer)?3 127.0.0.1:6379>?lrange?dst?0?-1 1)?"c" 2)?"b" 3)?"a" 127.0.0.1:6379>?rpoplpush?src?dst "1" 127.0.0.1:6379>?lrange?src?0?-1 1)?"3" 2)?"2" 127.0.0.1:6379>?lrange?dst?0?-1 1)?"1" 2)?"c" 3)?"b" 4)?"a"

b[l/r]pop-阻塞彈出左/右一個元素

語法: b[l/r]pop key1 [key2 …] timeout

移出并獲取列表的第一個或最后一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。

127.0.0.1:6379>?lpush?list1?1?2 (integer)?2 127.0.0.1:6379>?lpush?list2?a?b (integer)?2 127.0.0.1:6379>?lrange?list1?0?-1 1)?"2" 2)?"1" 127.0.0.1:6379>?lrange?list2?0?-1 1)?"b" 2)?"a" 127.0.0.1:6379>?blpop?list1?list2?10 1)?"list1"???#彈出元素所屬的列表 2)?"2"???????#彈出元素所屬的值 127.0.0.1:6379>?blpop?list1?list2?10 1)?"list1" 2)?"1" 127.0.0.1:6379>?blpop?list1?list2?10 1)?"list2" 2)?"b" 127.0.0.1:6379>?blpop?list1?list2?10 1)?"list2" 2)?"a" 127.0.0.1:6379>?blpop?list1?list2?10 (nil) (10.08s)??#?列表為空的時候,就等待超時10秒

更多編程相關知識,請訪問:Redis視頻教程!!

? 版權聲明
THE END
喜歡就支持一下吧
點贊6 分享