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"出列了,這不就是一個棧的結構麼?
相關文章
- Redis實現簡單訊息佇列Redis佇列
- Redis的列表型別(List)Redis型別
- 別再用 Redis List 實現訊息佇列了,Stream 專為佇列而生Redis佇列
- Redis 竟然能用 List 實現訊息佇列Redis佇列
- 通過佇列實現棧OR通過棧實現佇列佇列
- C#實現棧和佇列C#佇列
- PHP+Redis實戰教程(3):list列表型別PHPRedis型別
- 實現簡單延遲佇列和分散式延遲佇列佇列分散式
- 9. 題目:對佇列實現棧&用棧實現佇列佇列
- 單調棧 和 單調佇列佇列
- 單調棧和單調佇列佇列
- 用佇列實現棧佇列
- 用棧實現佇列佇列
- 棧,佇列,優先順序佇列簡單介面使用佇列
- 用棧實現佇列,實現Enqueue和Dequeue方法佇列ENQ
- Java面試題:棧和佇列的實現Java面試題佇列
- 兩個棧實現佇列佇列
- 佇列和棧佇列
- 棧和佇列佇列
- 資料結構-js實現棧和佇列資料結構JS佇列
- Java:基於LinkedList實現棧和佇列Java佇列
- Day 10| 232.用棧實現佇列 、 225. 用佇列實現棧佇列
- 《劍指 Offer》棧實現佇列佇列
- 用JavaScript實現棧與佇列JavaScript佇列
- 兩個棧實現佇列操作佇列
- 用2個棧實現佇列佇列
- 用兩個棧實現佇列佇列
- redis訊息佇列簡單應用Redis佇列
- 棧與佇列簡介佇列
- 單調棧/單調佇列佇列
- Redis?使用?List?實現訊息佇列的優缺點猜陂Redis佇列
- (六)Redis 訊息佇列 List、StreamsRedis佇列
- Redis實現訊息佇列Redis佇列
- 利用棧實現佇列(C語言實現)佇列C語言
- leedcode-用佇列實現棧佇列
- leedcode-用棧實現佇列佇列
- C++STL第四篇(最簡單的棧和佇列)C++佇列
- Redis 中使用 list,streams,pub/sub 幾種方式實現訊息佇列Redis佇列