cip*_*hor 12 triggers nosql redis
我有一个程序,它将从redis数据存储区中查询某个键,并在值满足某个条件时执行某些操作.
但是,我认为定期轮询redis是非常低效的,我想知道redis是否有"触发"机制,当值改变并满足条件时,将调用触发器.触发器可能是RPC函数,或HTTP msg,或其他东西,所以我不需要再对它进行轮询,就像poll和interrupt之间的区别一样.
这可能吗?
自 Redis 2.8( 2013 年 11 月 22 日发布)以来,现在有一个名为“Keyspace 通知”的功能,它允许客户端订阅键空间事件的特殊 Pub/Sub 通道,您可以将其用作某个键的触发器。
该功能默认被禁用,因为“虽然不是很明智,但该功能会使用一些 CPU 功率”。要启用,请发送CONFIG SET
命令来配置该功能。例如,以下命令将为字符串命令启用键空间事件:
> CONFIG SET notify-keyspace-events K$
OK
Run Code Online (Sandbox Code Playgroud)
接下来,使用常规 pubsubSUBSCRIBE
命令订阅特别命名的频道。例如,要侦听mykey
DB 0 中的键上的键空间事件:
> SUBSCRIBE __keyspace@0__:mykey
Reading messages... (press Ctrl-C to quit)
Run Code Online (Sandbox Code Playgroud)
通过从另一个客户端设置密钥值来测试该功能:
> SET mykey myvalue
OK
Run Code Online (Sandbox Code Playgroud)
您应该在订阅的客户端中收到一条消息:
1) "message"
2) "__keyspace@0__:mykey"
3) "set"
Run Code Online (Sandbox Code Playgroud)
收到事件后,您可以获取更新后的值并查看它是否满足应用程序代码中的条件。