我已经设置了具有 2 个集群的 Azure Redis 缓存服务。我正在使用StackExchange.Redis与缓存通信。我正在使用基于 SSL 的连接字符串按照 Azure 门户中的建议进行连接。
问题:
我的服务有多个实例连接到 Redis。当我从一个节点删除 key 时,我希望在服务的其他实例中捕获该 key (用于本地内存缓存失效)。但是,我注意到并非所有服务实例都会收到关键删除事件。
我确实在所有实例中获取了 Pub/Sub 事件,但似乎 Keyspace 通知并未通过所有 Redis 集群传递。我已经出于测试目的使用 __keyevent@0:__:del 尝试过此操作,但我注意到了该问题。
初始化我的 ConnectionMultiplexer 如下:
ConnectionMultiplexer.Connect(connectionString)
我已经翻阅了https://github.com/redis/redis/issues/2541并发现 Keyspace 通知不会跨集群传递,根据问题 - 解决方案是将客户端与所有主节点连接起来,在我的例子中,Redis 通过 Azure 设置,并且不太清楚如何指定所有主节点(地址)。
如有任何帮助,我们将不胜感激。提前致谢。
更新: Nuget for redis 客户端:StackExchange.Redis.StrongName 1.2.6
最佳答案
有一个 open PR添加对集群键空间通知的支持。解决方法是使用 Redis pub/sub 自己处理 key 失效...您只是无法获得对 key 过期的自然 Redis TTL 支持。
关于Azure Redis 集群关键事件失效事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65524424/