REDIS LIST MOVE恢复/回滚策略



我有以下场景:

  1. Redis SENTINEL,一个主Redis和两个副本
  2. Redis连接超时配置为30秒
  3. 莴苣的Java REDIS客户端
  4. 莴苣的REDIS客户端上的Spring数据

我有一个REDIS列表,我使用作为队列。正如预期的那样,队列上的每个元素必须由且只能由一个元素处理器处理。然而,在一些奇怪的情况下,我有时会遇到这样的情况:

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

(即从列表A移动到列表B,并阻塞8 seconds

)我遇到的问题是,元素实际上从列表A移动到列表B,我仍然得到超时,所以在此异常之后,元素在队列B中丢失,并且从未得到处理。我知道这可能是REDIS连接的网络问题。

我的问题是:处理这种情况的最好方法是什么?有没有办法"恢复"?未处理的元素并重试?

有几个方法可以解决这个问题:

  1. 使用具有故障转移功能的REDIS SENTINEL。这样,如果主REDIS实例发生故障,哨兵将自动故障转移到副本实例,并且您的元素不会丢失。

  2. 使用REDIS集群。这将为您提供高可用性,并确保您的元素在发生故障时不会丢失。

  3. 使用REDIS复制设置。这将为您提供一个热备REDIS实例,如果主实例出现故障,它可以接管。

  4. 使用REDIS持久化设置。这将确保您的元素在发生故障时不会丢失。

  5. 使用REDIS备份设置。这将确保您的元素在发生故障时不会丢失。

相关内容

  • 没有找到相关文章

最新更新