Redis队列的应用
Redis用雙鏈表list實現隊列的
LPUSH key value [value ...]
將一個或多個值 value 插入到列表 key 的表頭
如果有多個 value 值,那么各個 value 值按從左到右的順序依次插入到表頭: 比如說,對空列表 mylist 執行命令 LPUSH mylist a b c ,列表的值將是 c b a ,這等同于原子性地執行 LPUSH mylist a 、 LPUSH mylist b 和 LPUSH mylist c 三個命令。
如果 key 不存在,一個空列表會被創建并執行 LPUSH 操作。
當 key 存在但不是列表類型時,返回一個錯誤。
LPOP key
移除并返回列表 key 的頭元素。
RPOP key
移除并返回列表 key 的尾元素。
-----------------------------------------------------------------------------------
RPUSH key value [value ...]
將一個或多個值 value 插入到列表 key 的表尾(最右邊)。
如果有多個 value 值,那么各個 value 值按從左到右的順序依次插入到表尾:比如對一個空列表 mylist 執行 RPUSH mylist a b c ,得出的結果列表為 a b c ,等同于執行命令 RPUSH mylist a 、 RPUSH mylist b 、 RPUSH mylist c 。
如果 key 不存在,一個空列表會被創建并執行 RPUSH 操作。
當 key 存在但不是列表類型時,返回一個錯誤。
------------------------------------------------------------------------------------
BLPOP key [key ...] timeout
BLPOP 是列表的阻塞式(blocking)彈出原語。
它是 LPOP 命令的阻塞版本,當給定列表內沒有任何元素可供彈出的時候,連接將被 BLPOP 命令阻塞,直到等待超時或發現可彈出元素為止。
當給定多個 key 參數時,按參數 key 的先后順序依次檢查各個列表,彈出第一個非空列表的頭元素。
非阻塞行為
當 BLPOP 被調用時,如果給定 key 內至少有一個非空列表,那么彈出遇到的第一個非空列表的頭元素,并和被彈出元素所屬的列表的名字一起,組成結果返回給調用者。
當存在多個給定 key 時, BLPOP 按給定 key 參數排列的先后順序,依次檢查各個列表。
------------------------------------------------------------------------------------
LRANGE key start stop
返回列表 key 中指定區間內的元素,區間以偏移量start 和stop 指定。
下標(index)參數 start 和stop 都以0 為底,也就是說,以0 表示列表的第一個元素,以1 表示列表的第二個元素,以此類推。
你也可以使用負數下標,以 -1 表示列表的最后一個元素,-2 表示列表的倒數第二個元素,以此類推。
------------------------------------------------------------------------------------
# LPUSH mylist a b c
# LRANGE mylist 0 -1
# RPUSH mylist 1 2 3
# LRANGE mylist 0 -1
# LPOP mylist
# RPOP mylist
# LRANGE mylist 0 -1
List相關命令參考:http://redis.readthedocs.org/en/latest/list/index.html
Pub/Sub(發布/訂閱):http://redis.readthedocs.org/en/latest/pub_sub/index.html
總結
以上是生活随笔為你收集整理的Redis队列的应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深入理解malloc和free
- 下一篇: 自己写的哈希表以及解决哈希冲突