redis之列表型別(list)——佇列和棧簡單實現

loophome發表於2015-12-21
Redis列表是簡單的字串列表,排序插入順序。您可以在頭部或列表的尾部Redis的列表新增元素。

列表的最大長度為232 - 1 (每個列表超過4十億元素4294967295)元素。

首先,插入資料到列表當中:

> lpush my_list1 zhibin
(integer) 1
> lpush my_list1 biki
(integer) 2
> rpush my_list1 good
(integer) 3
#查詢佇列的長度
> llen my_list1
(integer) 3
插入列表,可以使用lpush和rpush命令,left可以視為表頭,right可以視為表尾。

獲取列表中的資料:

#按範圍取資料
> lrange my_list1 0 4
1) "biki"
2) "zhibin"
3) "good"
#從列表的左面彈出一個元素
> lpop my_list1
"biki"

如下表所示相關列出了一些基本的命令:

S.N. 命令 & 描述
1 BLPOP key1 [key2 ] timeout 
取出並獲取列表中的第一個元素,或阻塞,直到有可用
2 BRPOP key1 [key2 ] timeout 
取出並獲取列表中的最後一個元素,或阻塞,直到有可用
3 BRPOPLPUSH source destination timeout 
從列表中彈出一個值,它推到另一個列表並返回它;或阻塞,直到有可用
4 LINDEX key index 
從一個列表其索引獲取對應的元素
5 LINSERT key BEFORE|AFTER pivot value 
在列表中的其他元素之後或之前插入一個元素
6 LLEN key 
獲取列表的長度
7 LPOP key 
獲取並取出列表中的第一個元素
8 LPUSH key value1 [value2] 
在前面加上一個或多個值的列表
9 LPUSHX key value 
在前面加上一個值列表,僅當列表中存在
10 LRANGE key start stop 
從一個列表獲取各種元素
11 LREM key count value 
從列表中刪除元素
12 LSET key index value 
在列表中的索引設定一個元素的值
13 LTRIM key start stop 
修剪列表到指定的範圍內
14 RPOP key 
取出並獲取列表中的最後一個元素
15 RPOPLPUSH source destination 
刪除最後一個元素的列表,將其附加到另一個列表並返回它
16 RPUSH key value1 [value2] 
新增一個或多個值到列表
17 RPUSHX key value 
新增一個值列表,僅當列表中存在

參考連線:(http://www.yiibai.com/redis/redis_lists.html

可以利用list型別實現的功能:

1.實現先進先出佇列(FIFO)以及棧(LIFO)

佇列在web應用的範圍非常廣,比如日誌推送、任務處理等等,以往使用httpsqs實現佇列,其實,使用redis的list型別,也可以實現佇列。

> lpush list a
(integer) 1
> lpush list b
(integer) 2
> lpush list c
(integer) 3
#接下來,使用rpop取出佇列
> rpop list
"a"
#思考一下,如果我們使用lpop會出現什麼情況呢?
> lpop list
"c"
#結果是最後一個入列的元素"c"出列了,這不就是一個棧的結構麼?


相關文章