具有 StackExchange.Redis 的 Redis 键空间通知用于删除操作

Redis keyspace notifications with StackExchange.Redis For Delete operation

我一直在寻找如何使用 ServiceStack.Redis 库在 Redis 上执行对密钥 space 通知的订阅以删除密钥。

检查 git-hub 和其他网站上的可用测试,我发现 IRedisSubscription 可用于订阅特定的 Redis 键事件,对于设置操作,它工作得非常好,但在删除时operation 不调用动作。

是否可以使用 ServiceStack.Redis 利用此 Redis 功能并获取删除操作事件?

在配置文件中我添加了这一行:

notify-keyspace-events KEAg

我正在使用以下代码。

var channels = new[] { "__keyevent@0__:set" , "__keyevent@0__:del" };

using (var redisConsumer = new RedisClient("localhost:6379"))
        using (var subscription = redisConsumer.CreateSubscription()) {

            subscription.OnMessage = onKeyChange;
            subscription.SubscribeToChannelsMatching(channels );
        }

从表面上看,您得到的应该是可行的。

尝试将 notify-keyspace-events 设置为 AKEg 是多余的,如 Notifications Config:

中所述

A Alias for g$lshztxe, so that the "AKE" string means all the events.

尝试使用 SubscribeToChannels 而不是 SubscribeToChannelsMatching。后者用于模式订阅。

您可以使用 redis-cli 中的 PUBSUB NUMSUB __keyevent@0__:del 命令测试您有多少订阅者。

尝试使用 redis-cli 中的 SUBSCRIBE __keyevent@0__:del 测试您的事件是否被触发。这将帮助您确定问题是出在 redis-server 上还是应用程序代码上。

如果在尝试上述方法后仍无法正常工作,请用结果更新问题。