首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >侦听Redis中的更改?

侦听Redis中的更改?
EN

Stack Overflow用户
提问于 2012-05-21 04:31:49
回答 5查看 20K关注 0票数 23

我希望能够在我的redis集合中发生任何更改时运行回调。回调将把键和值作为输入。这样的事情有可能发生吗?

谢谢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-05-21 10:48:38

您还可以使用sync命令像追随者一样连接到Redis服务器。有关快速介绍,请参阅如何使用Redis Replication Works?

sync命令的输出有两个阶段。在第一阶段,服务器返回数据库dump.rdb文件。一旦文件被发送,它就开始以Redis协议发送命令,该协议也是AOF格式。

以下是您可以执行的操作的高级图片:

  1. 连接到Redis服务器并发出SYNC命令
  2. 保存并解析dump.rdb文件。构建初始数据集。available
  3. Parse是对后面的命令执行node.js based rdb parser。由于它们采用Redis协议,因此您可以从现有的Redis库开始。
  4. 对于您收到的每个命令,都会调用一个回调

这似乎有很多工作要做,但你应该能够很容易地破解它。而且它也会成为一个很好的开源库!

监视器编辑:同步v/s监视器

  1. Monitor是一个调试命令。响应格式可以(并且已经)随时间改变(D)。Sync用于主->从复制,因此supported
  2. Monitor将发出所有命令,包括只读命令。data.
  3. Monitor只会得到修改Sync的命令,并记录在lua脚本中执行的各个命令。Sync只会传输整个lua脚本,所以你必须自己解析脚本。这确实破坏了sync.
  4. Monitor将记录未成功的命令,Sync将只记录修改数据的命令。例如,命令del non-existing-key将由监视器记录,但在您运行sync时不会显示。
票数 11
EN

Stack Overflow用户

发布于 2012-05-21 04:57:23

更新:无论谁在读这篇文章-这些都是古老的答案,忽略了它们所有的。你需要的是Redis Keyspace通知,它已经存在很久了。请参阅https://redis.io/topics/notifications

票数 25
EN

Stack Overflow用户

发布于 2012-05-21 04:56:10

有两个选项:

  1. 使用MONITOR命令-它跟踪每个到达Redis的命令,你可以分析和查看何时你的集合被触摸。
  2. 如果你“拥有”写入集合的代码,给你的其他代码(你的回调)发信号。为此,您可以使用Redis Pub/Sub通道。

EDIT Redis实际上将在2.8版本中实现此功能。请参阅Antirez的博客文章:Redis keyspace changes notification system

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10676951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档