码迷,mamicode.com
首页 > 其他好文 > 详细

Redis事件通知(keyspace notification)

时间:2019-04-05 19:44:12      阅读:609      评论:0      收藏:0      [点我收藏+]

标签:测试   exp   ref   code   ali   mic   类型   参数   style   

Keyspace 通知使得客户端可以通过订阅频道或模式,来接收那些以某种方式改动了 Redis 数据集的事件(触发某些事件后可以向指定的频道发送通知),该功能需要 Redis 版本大于 2.8。

事件通过 Redis 的订阅与发布功能(pub/sub)来进行分发,因此所有支持订阅与发布功能的客户端都可以在无须做任何修改的情况下,直接使用此功能。

因为 Redis 目前的订阅与发布功能采取的是发送即忘(fire and forget)策略,所以如果你的程序需要可靠事件通知(reliable notification of events),那么目前的键空间通知可能并不适合你:当订阅事件的客户端断线时,它会丢失所有在断线期间分发给它的事件。

事件的类型

对于每个修改数据库的操作,键空间通知都会发送两种不同类型的事件:键空间通知(key-space)和键事件通知(key-event)。

当 del mykey 命令执行时:

  • 键空间频道的订阅者将接收到被执行的事件的名字,在这个例子中,就是 del
  • 键事件频道的订阅者将接收到被执行事件的键的名字,在这个例子中,就是 mykey

配置

因为开启键空间通知功能需要消耗一些 CPU,所以在默认配置下,该功能处于关闭状态。

修改 redis.conf 中的  notify-keyspace-events  参数,参数可以是以下字符的任意组合, 它指定了服务器该发送哪些类型的通知:

技术图片

输入的参数中至少要有一个 K 或者 E,否则的话,不管其余的参数是什么,都不会有任何通知被分发。

如: notify-keyspace-events "Ex"  表示对过期事件进行通知发送; notify-keyspace-events "kx" 表示想监控某个 key 的失效事件。将参数设为字符串 AKE 表示发送所有类型的通知。

过期事件测试

客户端订阅  subscribe __keyevent@0__:expired 

技术图片

在另一个客户端执行  setex name 10 txl ,10 秒过后,订阅端就会接收到消息:

技术图片

参考

http://redisdoc.com/topic/notification.html

https://redis.io/topics/notifications

Redis事件通知(keyspace notification)

标签:测试   exp   ref   code   ali   mic   类型   参数   style   

原文地址:https://www.cnblogs.com/tangxuliang/p/10659439.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!