• Redis 数据变化通知服务实践


         从Redis 2.8.0版本起,Redis加入了“Keyspace notifications”(即“键空间通知”)的功能。键空间通知,允许Redis客户端从“发布/订阅”通道中建立订阅关系,以便客户端能够在Redis中的数据因某种方式受到影响时收到相应事件。

      可能接收到的事件举例如下:

    • 影响一个给出的键的所有命令(会告诉你哪个键被执行了一个命令,这个命令是什么);
    • 接收到了一个LPUSH操作的所有键(LPUSH命令:key v1 [v2 v3..]将指定的所有值从左到右进行压栈操作,形成一个栈,并将该栈命名为指定的key);
    • 在数据库0中失效的所有键(不一定非得是数据库0,这里这样表述其实想表达可以知道影响的哪个数据库)。

         详细信息请参考:https://redis.io/topics/notifications 

    下面是动手实验环节:

    1.准备Redis环境。找到Redis.conf配置文件,搜索Notify找到下面内容。红色标注是开启了所有通知。大家可以根据实际情况进行筛选,具体情况可以看解释,但是K、E参数必须有一个,否则就没有通知。image

    2.通过命令行启动Redis Server:Redis-server.exe redis.conf

    3.编写一个C#程序,监控事件变化,主要代码如下,采用了ServiceStack组件,此组件可从github获取:https://github.com/ServiceStack/ServiceStack.Redis 。编译并运行。

    class Program
        {
            static void Main(string[] args)
            {
                ServiceStack.Redis.RedisClient client = new ServiceStack.Redis.RedisClient("127.0.0.1", 6379);
                ServiceStack.Redis.RedisSubscription sub = new ServiceStack.Redis.RedisSubscription(client);
                sub.OnMessage += ShowMessage;
               //订阅过期时间、set命令
                sub.SubscribeToChannels("__keyevent@0__:expired", "__keyevent@0__:set");
                Console.ReadLine();
            }

            static void ShowMessage(string a, string b)
            {
                Console.WriteLine("{0},{1}", a, b);
            }
        }

      4.打开redis安装包中的redis client,自动连接127.0.01:6379端口上的Redis Server,输入下面指令后,可以看到C#程序接收到了时间通知。

    Set Name 张三

    image

    image

        通过上面功能,可以简单实现Redis数据的变更通知了。

  • 相关阅读:
    T4文本模板转换过程
    ARKit从入门到精通(6)-ARSession介绍
    ARKit从入门到精通(5)-ARScnView介绍
    ARKit从入门到精通(4)-ARKit全框架API大全
    ARKit从入门到精通(3)-ARKit自定义实现
    ARKit从入门到精通(2)-ARKit工作原理及流程介绍
    ARKit从入门到精通(1)-ARKit初体验
    ios系统中各种设置项的url链接
    iOS 检测网络状态 自动判断 认为提示网络改变
    ios 根据scrollview滑动的偏移计算滑动到第几页算法(不同需求不同计算)
  • 原文地址:https://www.cnblogs.com/vveiliang/p/6836842.html
Copyright © 2020-2023  润新知