1

我的应用程序对缓存服务器重启具有弹性(嗯,希望如此,但没关系)。这意味着如果缓存(Redis,在主/从集群配置中)变得不可用(例如,整个集群变得不可用),应用程序可以通过关闭缓存重的特性来优雅地降级,并且仍然可以缓慢地工作。

由于我在主/从模式下使用 Redis,因此我必须将状态保存到文件系统中,以使主从同步更加高效。这意味着当服务器重新启动时,它会加载它从前一个化身看到的数据。

在整个集群关闭时我需要发送缓存失效消息之前,上述方法非常有效。流程是这样的:

  1. 缓存没问题
  2. 应用服务器将数据 X=Y 放入缓存。X=Y 保存到缓存文件系统。
  3. 缓存失败,重新启动。
  4. 应用程序服务器获取将 X 操作为 Y' 的命令 - 想要发送 X 的缓存失效。失败 - 缓存没有响应(仍然关闭)。由于缓存是可选的,因此应用服务器会记录并继续。
  5. 缓存备份 - 从文件系统加载数据,包括 X=Y
  6. 应用服务器收到服务 X 的请求 - 进入缓存并查看之前的数据 X=Y。即使数据库有 Y',Y 仍在服务中。问题。愤怒的顾客。

如何解决这个问题 - 特别是在具有主/从方案的 Redis 中(从站当前仅用于更快的故障转移)。

4

1 回答 1

0

由于我们在这里谈论缓存,我会推荐这两种方法:

  • 跳过 RDB,您不需要它来进行复制以正常工作
  • 当 redis 和您的应用程序无法通信(例如网络拆分)时,请刷新 redis 上的缓存
于 2013-11-15T09:45:42.240 回答