91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

redis的消息隊列防止數據丟失的方法

發布時間:2020-06-21 16:12:57 來源:億速云 閱讀:2332 作者:元一 欄目:關系型數據庫

序言:

redis是一個key-value存儲系統。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。這些數據類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支持各種不同方式的排序。

“消息隊列”是 Microsoft 的消息處理技術,它在任何安裝 Microsoft Windows 的計算機組合中,為任何應用程序提供消息處理和消息隊列功能,無論這些計算機是否在同一個網絡上或者是否同時聯機。

“消息隊列網絡”是能夠相互間來回發送消息的任何一組計算機。網絡中的不同計算機在確保消息順利處理的過程中扮演不同的角色。它們中有些提供路由信息以確定如何發送消息,有些保存整個網絡的重要信息,而有些只是發送和接收消息。

Redis實現消息隊列有兩種形式:

廣播訂閱模式:基于Redis的 Pub/Sub 機制,一旦有客戶端往某個key里面 publish一個消息,所有subscribe的客戶端都會觸發事件集群訂閱模式:基于Redis List雙向+ 原子性 + BRPOP

Redis消息隊列時,當Redis宕機后,消息可能會丟失(也要看持久化的策略)。如果收消息方未有重發和驗證機制,Redis內的數據會出現丟失。所以,使用Redis的作為消息隊列,通常是對于消息的準確性并非特別高的場景。

如果絕對的保證數據最終一致性,保證消息百分百不丟,那么需要:

1.寫入時候要求啟用事務處理,保證寫一定成功。

2. redis配置成任何變更一定實時持久化,比如存儲端是磁盤的話,每次變更馬上同步寫入磁盤,才算完成。redis是支持這種方式配置的,但是這么做會使它的內存數據庫特性完全消失,性能變得十分低下。

3. 消費端也要實現事務方式,處理完成后,再回來真實刪除消息。

4. 多線程或者多端同時并發處理,可以通過鎖的方式來規避。

3 4的需求需要自己實現,可以一起考慮,用另外一個隊列實現的方式也可以,但是更好的方式是在隊列內部實現個計數器。hash格式的加個字段加數值,list的先推一個數值打底,string的頭上加個數值再加個分隔符,就可以做個簡單計數器了,雖然土,勝在夠實用。

除了特定的系統之外,一般不會要求這么強的一致性,實現倒不難,但是性能會很差很差。

銀行類支付類業務會要求嚴格的事務一致性,而互聯網類業務一般會用點取巧的方式,就是可以容忍極短時間內少量數據丟失的方式,換取更高性能。

比如上面的redis處理,可以改為1000條數據變更的時候再真實落盤,即寫入磁盤。那么極限情況下,如突然斷電,存在可能丟失這1000條數據的風險。當然這種情況出現的概率也是很低的(遠離藍翔挖掘機?),所以大部分場景下可以接受。

以上就是redis消息隊列如何防止數據丟失的詳細內容,更多請關注億速云其它相關文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平潭县| 阜康市| 西城区| 宜黄县| 阿瓦提县| 民勤县| 边坝县| 桂林市| 松江区| 尼玛县| 本溪市| 遂平县| 怀柔区| 凤台县| 红原县| 岚皋县| 昌黎县| 登封市| 平塘县| 长治市| 特克斯县| 巴里| 郎溪县| 阳曲县| 海伦市| 温泉县| 大埔区| 拉孜县| 韶山市| 杨浦区| 甘肃省| 绥德县| 衡南县| 康保县| 蓬安县| 无棣县| 连南| 衢州市| 卓尼县| 上高县| 佛坪县|