簡體   English   中英

REDIS LIST MOVE 恢復/回滾策略

[英]REDIS LIST MOVE recovery/rollback strategy

我有以下情況:

  1. Redis SENTINEL 具有一個主 REDI 和兩個副本
  2. Redis 連接超時配置為 30 秒
  3. Lettuce 的 Java REDIS 客戶端
  4. 在 Lettuce 的 REDIS 客戶端之上的 Spring Data

我有一個 REDIS 列表,我將其用作隊列。 正如預期的那樣,隊列中的每個元素都必須由一個且只有一個元素處理器處理。 但是,在一些奇怪的極端情況下,我有時會遇到這種情況:

-> BLMOVE A B 8
     (*) I get a timeout here after 30 seconds

(也就是說,從列表A移動到列表B並阻塞8 seconds

我遇到的問題是 ELEMENT 實際上從列表A移動到列表B並且我仍然得到超時,所以在這個異常之后元素在隊列B中丟失並且永遠不會被處理。 我了解這可能是 REDIS CONNECTION 的網絡問題。

我的問題是:處理此類案件的最佳方法是什么? 有沒有辦法“恢復”未處理的元素並重試?

也許這是一個外部問題。

也許您的光盤沒有可用空間和/或您的所有內存都已使用並且此時發生抖動 另一個嫌疑人是CPU。

我會調查這些類型的問題

有幾種方法可以解決這個問題:

  1. 使用具有故障轉移功能的 REDIS SENTINEL。 這樣,如果主 REDIS 實例出現故障,哨兵將自動故障轉移到副本實例,並且您的元素不會丟失。

  2. 使用 REDIS 集群。 這將為您提供高可用性,並確保您的元素在發生故障時不會丟失。

  3. 使用 REDIS 復制設置。 這將為您提供一個熱備用 REDIS 實例,如果主實例出現故障,該實例可以接管。

  4. 使用 REDIS 持久性設置。 這將確保您的元素在發生故障時不會丟失。

  5. 使用 REDIS 備份設置。 這將確保您的元素在發生故障時不會丟失。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM