首页 > 解决方案 > 如何在禁用集群模式的情况下从 redis 只读副本读取?

问题描述

我们目前有一个使用 redis(AWS elasticache)的服务,有几个副本节点,集群模式被禁用。在这种情况下,我们如何实现从副本的只读和对主节点的读/写?

golang 中是否有相同的好的库?我可以找到几个库,但它们都是为启用集群模式而设计的。

标签: amazon-web-servicesredisamazon-elasticache

解决方案


我们所做的是使用 route53 创建一个指向“主端点”的“写入”URL,如果出现问题,它将故障转移到当前的主节点。这样您就不必在您的应用程序中更新它。然后使用循环将所有节点放在“读取”URL 下。

除非您进行大量读取和不频繁的写入,否则您通常不需要在同一个应用程序中访问读取(从副本)和写入。然后就可以在代码中维护两个redis客户端实例了。不优雅,但有效。

使用加权循环法,您可以根据需要调低当前主节点上的读数。只需注意何时发生故障转移事件即可对其进行更新。

将写入 URL 上的 TTL 设置为较低的值,例如 1 分钟或更短。


推荐阅读