从例子看redis notification

原创 2018年04月17日 15:55:59

https://redis.io/topics/notifications

背景:
1)默认是不开启的,可以通过conf文件开启,也可以在客户端配置:

redis-cli config set notify-keyspace-events KEA

开启的参数KEA是三个参数的组合,表示所有能通知的都通知。这是所有参数官网的解释:

K     Keyspace events, published with __keyspace@<db>__ prefix.
E     Keyevent events, published with __keyevent@<db>__ prefix.
g     Generic commands (non-type specific) like DEL, EXPIRE, RENAME, ...
$     String commands
l     List commands
s     Set commands
h     Hash commands
z     Sorted set commands
x     Expired events (events generated every time a key expires)
e     Evicted events (events generated when a key is evicted for maxmemory)
A     Alias for g$lshzxe, so that the "AKE" string means all the events.

要关闭传空字符串作为参数:

redis-cli config set notify-keyspace-events ''

2)通知有两种方式space和event,区别是对于space:是key/operation;另一个event是operation/key:

PUBLISH keyspace@0:mykey del
PUBLISH keyevent@0:del mykey
对expired事件通知是准实时的:1)如果客户端访问某个key时 2)redis自己的background运行的垃圾收集它会轮流访问有ttl的key,此时相当于第一条。

3)因为是pubsub机制,可以有多个客户端同时得到通知。并且pubsub不提供可靠交付(暂时),意味着如果客户端重启这段时间的通知会丢。

4)set相同key不管值是否相同都会通知,del 如果key存在会通知,否则不通知;

例子
客户端A:

127.0.0.1:6379[1]> set foo 2
OK
127.0.0.1:6379[1]> del foo 2
(integer) 1

客户端B:

# redis-cli
127.0.0.1:6379> psubscribe '__key*__:*'
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "__key*__:*"
3) (integer) 1
1) "pmessage"
2) "__key*__:*"
3) "__keyspace@1__:foo"
4) "set"
1) "pmessage"
2) "__key*__:*"
3) "__keyevent@1__:set"
4) "foo"
1) "pmessage"
2) "__key*__:*"
3) "__keyspace@1__:foo"
4) "del"
1) "pmessage"
2) "__key*__:*"
3) "__keyevent@1__:del"
4) "foo"

如果只对设置了ttl的key的expired感兴趣:

127.0.0.1:6379> psubscribe '__key*__:expired'

如果只对event感兴趣:

127.0.0.1:6379> psubscribe '__keyevent@1__:expired'

Redis从入门到项目实战

redis在当前的大型网站和500强企业中,已被广泛应用。 redis是基于内存的key-value数据库,比传统的关系型数据库在性能方面有非常大的优势。 肖老师这套视频,精选了redis在实际项目中的十几个应用场景。通过本课程的学习,可以让学员快速掌握redis在实际项目中如何应用。 作为架构师,redis是必须要掌握的技能!
  • 2017年05月26日 15:12

Redis学习记录之keyspace notification简析(二十三)

1、功能概览键空间通知使得客户端可以通过订阅频道或模式, 来接收那些以某种方式改动了 Redis 数据集的事件。以下是一些键空间通知发送的事件的例子:所有修改键的命令。 所有接收到 LPUSH 命令...
  • qq_32347977
  • qq_32347977
  • 2016-01-18 15:09:57
  • 645

Redis 的 keyspace notification

1、Redis 的keyspace notification(键空间通知) 初探 2、Redis 的 keyspace notification(键空间通知)实践...
  • zpf0918
  • zpf0918
  • 2017-02-07 17:15:16
  • 362

Notification简单实例

Notification简单用法
  • guchuanhang
  • guchuanhang
  • 2016-06-09 10:31:33
  • 1537

Notification小例子

  • 2016年03月17日 08:43
  • 16.87MB
  • 下载

Notification从顶部慢慢滑出弹出

今天项目有个任务,就是接受到服务器发送的信息,用一个notification通知栏显示出来,从顶部慢慢滑出来,然后在github找到了类似的,读完源码才知道,其实就是自定义的一个view,有动画效果而...
  • JimTrency
  • JimTrency
  • 2016-05-31 09:32:24
  • 714

phonegap local-notifications插件应用实例含(android、ios、windows)

  • 2015年06月03日 15:42
  • 9.57MB
  • 下载

Android通知Notification入门小例子(一)

通知(Notification)是 Android 系统中比较有特色的一个功能,当某个应用程序希望向 用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助通知来实现。发出一 条通知后,手机最...
  • u011159417
  • u011159417
  • 2015-12-21 13:12:13
  • 591

Redis 事件通知(keyspace & keyevent notification)

Redis 事件通知(keyspace & keyevent notification) 对于每个修改数据库的操作,键空间通知都会发送两种不同类型的事件消息:keyspace 和 keyevent。以...
  • qijiqiguai
  • qijiqiguai
  • 2017-10-13 18:10:50
  • 770

利用Redis keyspace notification 实现定时执行

当用户在商城下单之后, 对于半小时未支付的订单进行自动取消, 再例如,商品定时上架,下架等需求。 通过REDIS 的keyspace notification 来实现对时间精确控制定时执行功能。...
  • i_vic
  • i_vic
  • 2017-12-14 10:52:56
  • 107
收藏助手
不良信息举报
您举报文章:从例子看redis notification
举报原因:
原因补充:

(最多只允许输入30个字)