redis发布/订阅

前言:  之前看过redis的订阅发布文档, 但是实际开发中并未使用.

   最近同事有一个需求, 需要在key失效的时候做一些事情, 趁机研究了一下redis的订阅发布机制.

           其命令就不多做介绍了,可以参考:http://www.redis.net.cn/order/3632.html

           不过需要注意redis 2.8版本以后才支持对失效key的 订阅/发布

场景:

   操作系统: mac os

   redis: 4.0.11

步入正题:

        redis安装就不过多介绍了

        首先在本机启动redis测试一下redis的订阅发布

  启动redis服务: redis-server



        启动redis客户端并测试是否连接服务成功 : redis-cli


       先打开一个客户端并订阅一个channel:

        

    这个客户端不要关闭, 接收消息, 另外再启动一个终端并打开redis客户端发布消息:


  另外一个客户端会接收到消息:



下面开始使用redis的key失效事件订阅:

由于redis默认没有开启失效key的订阅, 需要修改配置文件或者通过config命令打开

       1. 命令: config set notify-keyspace-events Ex

        命令打开的方式只是暂时的,服务重启后就会失效, 如果指定了配置文件, 可以使用 config rewrite将配置文件重写


        2. 配置文件: 在redis文件夹下找到 redis.conf文件,打开找到1000行左右, 版本不一样可能行号位置不一样,

原始为: notify-keyspace-events '' 修改为 notify-keyspace-events Ex, 如下图


  然后打开第一个redis客户端, 订阅channel :   subscribe  __keyevent@0__:expired


在另外一个客户端设置一个key, 失效时间3秒,三秒后订阅了key失效事件的客户端可以接受到消息

    set test test  Ex 3




以上本地测试完成. 下面在java中使用redis的订阅/发布key失效事件

maven依赖:


redis模板配置,网上一大堆,只上截图:


MyKeyExpiredListener为自己定义的监听器


此处订阅key失效事件: __keyevent@0__:expired

启动服务, 并通过redis客户端设置一个key :

set face:111 face Ex 3

控制台会打印出失效的key

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容