Redis List 命令技巧


1.實現棧的功能(先進后出)

lpush + lpop = stack

127.0.0.1:6379> lpush mylist 1 2 3 4 5
(integer) 5
127.0.0.1:6379> lpop mylist
"5"
127.0.0.1:6379> lpop mylist
"4"
127.0.0.1:6379> lrange mylist 0 -1
1) "3"
2) "2"
3) "1"

 

2. 實現隊列功能

lpush + rpop   = queue

127.0.0.1:6379> lpush mylist 4 5
(integer) 5
127.0.0.1:6379> lrange mylist 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
127.0.0.1:6379> rpop mylist
"1"
127.0.0.1:6379> rpop mylist
"2"
127.0.0.1:6379> lrange mylist 0 -1
1) "5"
2) "4"
3) "3"

 

3. 實現有限數據集合

lpush + ltrim = capped collection

ltrim [ltrim key  range_l range_r]:保留區域類的元素,其他的刪除

127.0.0.1:6379> rpush mylist 2 1
(integer) 5
127.0.0.1:6379> lrange mylist 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
127.0.0.1:6379> ltrim mylist 2 3
OK
127.0.0.1:6379> lrange mylist 0 -1
1) "3"
2) "2"

 

4.實現消息隊列

lpush + brpop = message queue

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

操作命令   BRPOP list  timeout

brpop mylist 10

返回值

假如在指定時間內沒有任何元素被彈出,則返回一個 nil 和等待時長。 反之,返回一個含有兩個元素的列表,第一個元素是被彈出元素所屬的 key ,第二個元素是被彈出元素的值。

127.0.0.1:6379> lpush mylist 1 2 3 4 5
(integer) 5
127.0.0.1:6379> brpop mylist 10
1) "mylist"
2) "1"
127.0.0.1:6379> brpop mylist 100
1) "mylist"
2) "2"
127.0.0.1:6379> brpop mylist 10000
1) "mylist"
2) "3"
127.0.0.1:6379> brpop mylist 10
1) "mylist"
2) "4"
127.0.0.1:6379> brpop mylist 10
1) "mylist"
2) "5"
127.0.0.1:6379> brpop mylist 10
(nil)
(10.05s)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM