天天看點

redis之清單類型(list)——隊列和棧簡單實作

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"出列了,這不就是一個棧的結構麼?
           

繼續閱讀