redis list類型命令的實現(xiàn)
redis的list類型,可以存儲雙向鏈表作為value,key保留有head和tail指針可以指向雙向鏈表的頭和尾,因此可以直接從頭或尾對list進行操作。
全部命令如下:
127.0.0.1:6379> help @list ? BLMOVE source destination LEFT|RIGHT LEFT|RIGHT timeout ? summary: Pop an element from a list, push it to another list and return it; or block until one is available ? since: 6.2.0 ? BLMPOP timeout numkeys key [key ...] LEFT|RIGHT [COUNT count] ? summary: Pop elements from a list, or block until one is available ? since: 7.0.0 ? BLPOP key [key ...] timeout ? summary: Remove and get the first element in a list, or block until one is available ? since: 2.0.0 ? BRPOP key [key ...] timeout ? summary: Remove and get the last element in a list, or block until one is available ? since: 2.0.0 ? BRPOPLPUSH source destination timeout ? summary: Pop an element from a list, push it to another list and return it; or block until one is available ? since: 2.2.0 ? LINDEX key index ? summary: Get an element from a list by its index ? since: 1.0.0 ? LINSERT key BEFORE|AFTER pivot element ? summary: Insert an element before or after another element in a list ? since: 2.2.0 ? LLEN key ? summary: Get the length of a list ? since: 1.0.0 ? LMOVE source destination LEFT|RIGHT LEFT|RIGHT ? summary: Pop an element from a list, push it to another list and return it ? since: 6.2.0 ? LMPOP numkeys key [key ...] LEFT|RIGHT [COUNT count] ? summary: Pop elements from a list ? since: 7.0.0 ? LPOP key [count] ? summary: Remove and get the first elements in a list ? since: 1.0.0 ? LPOS key element [RANK rank] [COUNT num-matches] [MAXLEN len] ? summary: Return the index of matching elements on a list ? since: 6.0.6 ? LPUSH key element [element ...] ? summary: Prepend one or multiple elements to a list ? since: 1.0.0 ? LPUSHX key element [element ...] ? summary: Prepend an element to a list, only if the list exists ? since: 2.2.0 ? LRANGE key start stop ? summary: Get a range of elements from a list ? since: 1.0.0 ? LREM key count element ? summary: Remove elements from a list ? since: 1.0.0 ? LSET key index element ? summary: Set the value of an element in a list by its index ? since: 1.0.0 ? LTRIM key start stop ? summary: Trim a list to the specified range ? since: 1.0.0 ? RPOP key [count] ? summary: Remove and get the last elements in a list ? since: 1.0.0 ? RPOPLPUSH source destination ? summary: Remove the last element in a list, prepend it to another list and return it ? since: 1.2.0 ? RPUSH key element [element ...] ? summary: Append one or multiple elements to a list ? since: 1.0.0 ? RPUSHX key element [element ...] ? summary: Append an element to a list, only if the list exists ? since: 2.2.0
下面示例如下:
- lpush:lpush key e1 e2 e3…將數(shù)據(jù)從頭那里推入list
- lpop:lpop key,將數(shù)據(jù)從head彈出
這樣2個同向的命令組合起來,可以實現(xiàn)一個隊列。
反向的命令組合起來,可以實現(xiàn)一個棧。
127.0.0.1:6379> lpush k1 a b c d e (integer) 5 127.0.0.1:6379> lpop k1 "e" 127.0.0.1:6379> lpop k1 "d"
lrange :lrange key start end,展示key對應的從下標start到end的所有數(shù)據(jù)
127.0.0.1:6379> lrange k1 0 -1 1) "c" 2) "b" 3) "a"
lindex:lindex key index ,返回key對應的List指定index位置的值
127.0.0.1:6379> lrange k1 0 -1 1) "f" 2) "e" 3) "d" 4) "c" 5) "b" 6) "a" 127.0.0.1:6379> lindex k1 1 "e"
lset:lset key index value,在key對應的list中的指定下標處替換為value
127.0.0.1:6379> lset k1 3 x OK 127.0.0.1:6379> lrange k1 0 -1 1) "f" 2) "e" 3) "d" 4) "x" 5) "b" 6) "a"
lrem:lrem key num target,刪除key對應的list中的target元素,如果num大于0,從head開始刪num個。如果num小于0,從tail開始刪abs(num)個
127.0.0.1:6379> lrange k3 0 -1 1) "d" 2) "6" 3) "a" 4) "5" 5) "c" 6) "4" 7) "a" 8) "3" 9) "b" 10) "2" 11) "a" 12) "1" 127.0.0.1:6379> lrem k3 2 a (integer) 2 127.0.0.1:6379> lrange k3 0 -1 1) "d" 2) "6" 3) "5" 4) "c" 5) "4" 6) "3" 7) "b" 8) "2" 9) "a" 10) "1"
linsert:linsert key before/after element value,在key對應的list中,在元素element(不是下標)之前或者之后,添加value
127.0.0.1:6379> lrange k3 0 -1 1) "d" 2) "6" 3) "5" 4) "c" 5) "4" 6) "3" 7) "b" 8) "2" 9) "a" 10) "1" 127.0.0.1:6379> linsert k3 after 6 a (integer) 11 127.0.0.1:6379> lrange k3 0 -1 1) "d" 2) "6" 3) "a" 4) "5" 5) "c" 6) "4" 7) "3" 8) "b" 9) "2" 10) "a" 11) "1"
llen:llen key,返回長度
redis的List類型有很多關于下標的操作,也可以將其抽象為一個數(shù)組來使用。
127.0.0.1:6379> llen k3 (integer) 10
blpop:blpop key time,彈出指定key對應的list中的一個元素,如果list沒有元素或者不存在key對應的這個list,則阻塞等待time指定的時間,0表示一直等待,單位是s。
127.0.0.1:6379> blpop k1 0
阻塞期間如果list有了元素,則會中斷阻塞并彈出
127.0.0.1:6379> blpop k1 0 1) "k1" 2) "a" (35.77s)
ltrim:ltrim key start end,刪除key對應的list start和end之外的兩端的元素
127.0.0.1:6379> lrange k4 0 -1 1) "f" 2) "e" 3) "d" 4) "c" 5) "b" 6) "a" 127.0.0.1:6379> ltrim k4 1 -2 OK 127.0.0.1:6379> lrange k4 0 -1 1) "e" 2) "d" 3) "c" 4) "b"
到此這篇關于redis list類型命令的實現(xiàn)的文章就介紹到這了,更多相關redis list類型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
詳解redis大幅性能提升之使用管道(PipeLine)和批量(Batch)操作
這篇文章主要介紹了詳解redis大幅性能提升之使用管道(PipeLine)和批量(Batch)操作 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2016-12-12Redis快速實現(xiàn)分布式session的方法詳解
Session是客戶端與服務器通訊會話跟蹤技術,服務器與客戶端保持整個通訊的會話基本信息。本文主要介紹了Redis快速實現(xiàn)分布式session的方法,感興趣的可以學習一下2022-01-01Redis特殊數(shù)據(jù)類型HyperLogLog基數(shù)統(tǒng)計算法講解
這篇文章主要為大家介紹了Redis特殊數(shù)據(jù)類型HyperLogLog基數(shù)統(tǒng)計算法講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05