.NET

.Net Redis Key过期监听

2019-04-08  本文已影响4人  迷糊先生_57ad

键空间通知(keyspace notification)

键空间通知使得客户端可以通过订阅频道或模式, 来接收那些以某种方式改动了 Redis 数据集的事件。

可以通过修改 redis.conf 文件, 或者直接使用 CONFIG SET 命令来开启或关闭键空间通知功能(测试开启KEY过期事件):
1 修改redis.conf 文件

notify-keyspace-events Ex

2 通过命令行修改

config set notify-keyspace-events Ex

2 重新开启一个终端并设置过期时间

//重复1.1 -1.2操作连接Redis
//执行命令添加一个为10秒的Key
setex name 10 expire

3 10秒过后订阅端会展示一下信息

1) "pmessage"
2) "__keyevent@0__:expired"
3) "__keyevent@0__:expired"
4) "name"
.Net 订阅Key过期事件需要引用一下DLL
//设置一个为10秒的Key
using (var redisPublisher = new RedisClient("192.168.1.1", 6379))
{
  TimeSpan ts = new TimeSpan(100000000);
  redisPublisher.Set("name", "expire", ts);
}
//订阅
using (var redisConsumer = new RedisClient("192.168.1.1", 6379))
{
    var subscription = redisConsumer.CreateSubscription();
    subscription.OnSubscribe = channel =>
    {
         Console.WriteLine("开始订阅 '{0}'", channel);
     };
     subscription.OnUnSubscribe = channel =>
     {
           Console.WriteLine("取消订阅 '{0}'", channel);            
      };
      subscription.OnMessage = (channel, msg) =>
      {
            Console.WriteLine("过期的ID '{0}' -- 通道名称 '{1}'", msg, channel);
       };
      subscription.SubscribeToChannels("__keyevent@0__:expired");
}
RedisKey过期监听.png
上一篇 下一篇

猜你喜欢

热点阅读