我环顾四周,我无法找到如何使用StackExchange.Redis库在Redis上执行键空间通知订阅.
检查可用的测试我发现使用频道的pubsub,但这更像是服务总线/排队,而不是订阅特定的Redis键事件.
是否可以使用StackExchange.Redis来利用此Redis功能?
常规订阅者API应该可以正常工作 - 对用例没有假设,这应该可以正常工作.
但是,我有点同意这是内置的功能,可能会受益于API上的辅助方法,也许还有一个不同的委托签名 - 封装了keyapace通知的语法,以便人们不需要复制它.为此:我建议您记录一个问题,以免它被遗忘.
首先,检查Redis键空间事件是否已启用非常重要.例如,应在类型为Set的键上启用事件.这可以使用CONFIG SET
命令完成:
CONFIG SET notify-keyspace-events KEs
一旦启用了密钥空间事件,它就是订阅pub-sub频道:
using (ConnectionMultiplexer connection = ConnectionMultiplexer.Connect("localhost")) { IDatabase db = connection.GetDatabase(); ISubscriber subscriber = connection.GetSubscriber(); subscriber.Subscribe("__keyspace@0__:*", (channel, value) => { if ((string)channel == "__keyspace@0__:users" && (string)value == "sadd") { // Do stuff if some item is added to a hypothethical "users" set in Redis } } ); }
了解更多关于密钥空间的事件在这里.