了解redis队列原理
redis隊列
# 一、redis隊列? redis的發布訂閱模式 發送者 (pub) 發送消息,訂閱者 (sub) 接收消息。Redis 客戶端可以訂閱任意數量的頻道。 Redis的發布訂閱模式本質和傳統的MQ的發布訂閱類似,但是相對于其它幾款MQ產品來說, redis的使用更加便捷,也更加輕量化,不需要單獨去搭建集成一套繁重的MQ框架。 但缺點也很明顯,redis發布的消息不會持久化,所以當某一臺服務器出現問題的時候, 這個消息會丟失,所以在考慮使用之前要慎重,當前的業務是否對數據一致性要求很高,如果要求很高,還是建議使用MQ產品。 介紹redis命令: SUBSCRIBE,用于訂閱信道PUBLISH,向信道發送消息UNSUBSCRIBE,取消訂閱 用于退訂給定的一個或多個頻道的信息。 語法: UNSUBSCRIBE channel
這種模式有如下的優缺點:
優點
典型的廣播模式,一個消息可以發布到多個消費者
多信道訂閱,消費者可以同時訂閱多個信道,從而接收多類消息
消息即時發送,消息不用等待消費者讀取,消費者會自動接收到信道發布的消息
缺點
消息一旦發布,不能接收。換句話就是發布時若客戶端不在線,則消息丟失,不能尋回
不能保證每個消費者接收的時間是一致的
若消費者客戶端出現消息積壓,到一定程度,會被強制斷開,導致消息意外丟失。通常發生在消息的生產遠大于消費速度時
可見,Pub/Sub 模式不適合做消息存儲,消息積壓類的業務,而是擅長處理廣播,即時通訊,即時反饋的業務。
思考如果我們使用這種模式讓api服務作為消息的發布者(pub)而所有的server作為服務的訂閱者(sub)可不可以,為什么?
lpush、lpop、rpush、rpop、lrange
Lpush 命令將數據插入到隊列頭部
格式:
LPUSH key “數據”
Rpush 命令用于將一個或多個值插入到列表的尾部(最右邊)。
格式:
Rpush key “數據”
Lpop 命令用于移除并返回列表的第一個元素
格式:
Lpop key
Rpop 命令用于移除列表的最后一個元素,返回值為移除的元素
格式:
RPOP key
首先我們來看一個現象,當我們通過lpop命令或rpop命令從一個空的隊列中獲取數據
我們看到如果隊列是空的 通過lpop和rpop命令直接返回了空
總結
以上是生活随笔為你收集整理的了解redis队列原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: maven仓库中_remote.repo
- 下一篇: 04,redis队列表list