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