我正在尝试使用ServiceStack.Redis访问.Net应用程序中的密钥空间通知。我是Redis的新手。
我通过命令在缓存上启用了事件通知:
CONFIG SET notify-keyspace-events KEs
我正在订阅.Net中的频道“密钥* :*”。以下是我的代码:
const string ChannelName = "__key*__:*";
using (var redisConsumer = new RedisClient("localhost:6379"))
using (var subscription = redisConsumer.CreateSubscription())
{
subscription.OnSubscribe = channel =>
{
Console.WriteLine(String.Format("Subscribed to '{0}'", channel));
};
subscription.OnUnSubscribe = channel =>
{
Console.WriteLine(String.Format("UnSubscribed from '{0}'", channel));
};
subscription.OnMessage = (channel, msg) =>
{
Console.WriteLine(String.Format("Received '{0}' from channel '{1}'",
msg, channel));
};
Console.WriteLine(String.Format("Started Listening On '{0}'", ChannelName));
subscription.SubscribeToChannels(ChannelName); //blocking
}
从另一个.Net应用程序,我将新数据添加到缓存。我期待收到一个事件(在OnMessage中)。在缓存中添加新项目时,应用程序不捕获任何事件。
但是,当我在redis-cli.exe上运行命令“psubscribe” key * :*'“时,它会正确捕获事件。 (当我向缓存添加新项目时,它会在控制台窗口中显示事件详细信息。)
我无法在我的应用程序中捕获相同内容。我在这里错过了什么吗?
答案 0 :(得分:1)
使用subscription.SubscribeToChannelsMatching(ChannelName);