Azure Redis 集群关键事件失效事件

标签 azure redis stackexchange.redis redis-cluster azure-redis-cache

我已经设置了具有 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/

相关文章:

sql - 为大型 Web 应用程序选择什么数据库策略

amazon-web-services - 为什么我的 lambda 无法与 elasticache 通信?

Redis哨兵中的C#操作

Azure WebJob/Scheduler 从上午 8 点到下午 6 点每 30 分钟一次?

azure - 我可以使用同一个 Redis 实例来存储来自多个应用程序的 session 吗?

azure - 何时使用事件网格以及何时使用服务总线/存储队列?

python - Celery/Redis 一些(很多)消息被丢弃

performance - 如何在读取哈希键时避免多次调用 redis

azure - API 连接 - ARM 模板中的用户名和密码

c# - 如何解决错误 "Unable to locate local.config.user file. Make sure you have run ' build.cmd local' '