redis - redis pub sub 仅适用于某组键?
问题描述
我有一个用例,我只想为一组特定的键启用通知,以便当这些键过期时,我可以从 redis 获得通知。
我已经按照这个答案来实现这个。
我已将参数 notify-keyspace-events 设置为“Ex”
为了实现这一点,我在 DB-0 中添加了我想要通知的键,在 DB-1 中添加了其他键。但我收到了两个数据库的通知。有什么方法可以从特定数据库获取通知?
根据redis文档:
" Redis 可以通知 Pub/Sub 客户端有关键空间中发生的事件。此功能记录在http://redis.io/topics/notifications 例如,如果启用了键空间事件通知,并且客户端对键执行 DEL 操作“foo”存储在Database 0中,两条消息将通过 Pub/Sub 发布:
PUBLISH keyspace@0 :foo del
PUBLISH keyevent@0 :del foo "
但是我收到了来自 DB-0 和 DB-1 的通知。
PS:我知道我可以在我的应用程序中过滤密钥,但是我在 redis 中存储了太多过期的密钥,并且发送所有过期的通知会增加我的 redis 服务器上的负载。
解决方案
我认为您订阅了与所有 DB 通知消息匹配的模式,例如PSUBSCRIBE __key*__:*
.
实际上,您可以在订阅模式中指定 db 索引:PSUBSCRIBE __keyspace@0__:*
和PSUBSCRIBE __keyevent@0__:*
. 这样,您只会收到 的通知DB0
。
推荐阅读
- c++ - 带有 map()/mapto() 函数的 C/C++ 库?
- python - 查询数据维度必须匹配训练数据维度
- python - 在 Docker 容器中运行 Selenium 测试
- ios - 如何在 3D Mixer Unit (kAudioUnitSubType_SpatialMixer) 中使用立体声源?
- python - python分析数据csv文件
- python - 如何确定计数图顺序?
- python - 在 python 中将 web 表导出到 csv
- javascript - React - Onselect 不在下拉列表中显示选定的值
- javascript - Express 应用程序在带有查询参数的路由上返回“Cannot GET /”
- r - 如何从不规则面板时间序列数据生成规则面板