redis pub sub仅适用于某些键集吗?

时间:2018-09-18 13:17:47

标签: redis

我有一个用例,其中我只想为一组特定的键启用通知,以便当这些键过期时,我可以从redis收到通知。

我已遵循this的答案来实施此操作。

我已将参数notify-keyspace-events设置为“ Ex”

为此,我要在DB-0中添加要通知的键,并在DB-1中添加其他键。但是我正在收到两个数据库的通知。有什么方法可以仅从特定数据库获取通知吗?

根据redis文档:

Redis可以将关键空间中发生的事件通知给发布/订阅客户端。 http://redis.io/topics/notifications中记录了此功能 例如,如果启用了键空间事件通知,并且客户端 对存储在数据库0 中的键“ foo”执行DEL操作,两个 邮件将通过发布/订阅发布:

发布 keyspace @ 0 :foo del

发布 keyevent @ 0 :del foo “

但是我同时收到来自DB-0和DB-1的通知。

PS:我知道我可以过滤应用程序中的密钥,但是我在redis中存储了太多的过期密钥,并且发送所有过期消息的通知会增加我的redis服务器的负载。

1 个答案:

答案 0 :(得分:0)

我认为您订阅了与所有DB的通知消息相匹配的模式,例如PSUBSCRIBE __key*__:*

实际上,您可以按照预订模式PSUBSCRIBE __keyspace@0__:*PSUBSCRIBE __keyevent@0__:*指定数据库索引。这样,您只会收到DB0的通知。

相关问题