Redis 密钥空间通知与 StackExchange.Redis 用于删除操作



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

检查 git-hub 和其他网站上的可用测试,我发现 IRedisSubscription 可用于订阅特定的 Redis 密钥事件,对于集合操作,它工作绝对正常,但是当涉及到删除操作时,不会调用该操作。

是否可以使用 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是多余的,如通知配置中所述:

g$lshztxe 的别名,因此"AKE"字符串表示所有 事件。

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

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

尝试测试您的事件是否由 redis-cliSUBSCRIBE __keyevent@0__:del触发。这将帮助您确定问题出在 redis 服务器还是应用程序代码上。

如果您在尝试上述操作后无法使其正常工作,请使用结果更新问题。

最新更新