本篇文章給大家介紹一下redis中的list命令,通過代碼示例了解一下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視頻教程!!