sub.subscribe('myCollection');
sub.on('message', (channel, data) => {
// this is the callback you talked about
console.log(`${channel} is now ${data}`);
});
// ... later on ...
pub.publish('myCollection', [1,2,3])
// console will output:
// myCollection is now [1,2,3]
5条答案
按热度按时间62lalag41#
更新(2020年):无论是谁阅读这篇文章--这些都是古老的答案,不要理会它们。你需要的是Redis密钥空间通知,它已经存在了很长时间。
kyks70gy2#
两个选项:
1.使用
MONITOR
命令--它会追踪每一个进入Redis的命令,你可以分析和查看你的收藏被访问的时间。1.如果你"拥有"写入集合的代码,那么你可以用Redis Pub/Sub通道通知你的其他代码(你的回调)。
wz8daaqr3#
你也可以像粉丝一样使用sync命令连接到Redis服务器,请参阅How Redis Replication Works?快速了解。
sync命令的输出有两个阶段,第一阶段服务器返回数据库转储.rdb文件,文件发送后,服务器开始以Redis协议发送命令,也是AOF格式。
以下是您可以执行的操作的概要图:
1.连接到Redis服务器并发出
SYNC
命令1.保存并解析dump.rdb文件。构建初始数据集。node.js based rdb parser可用
1.解析下面的命令,因为它们是Redis协议,你可以从一个现有的Redis库开始。
1.对于收到的每个命令,调用回调
这看起来工作量很大,但是你应该可以很容易地破解它。而且它也会成为一个很好的开源库!
编辑:同步与监视器
Monitor
是一个调试命令。响应格式可以(并且已经)随时间而更改(d)。Sync
用于主-〉从复制,因此将得到更好的支持Monitor
将发出所有命令,包括只读命令。Sync
将只获取修改数据的命令。Monitor
将记录在lua脚本中执行的单个命令。Sync
将只传输整个lua脚本,因此您必须自己解析脚本。这确实是sync
的一个交易破坏者。Monitor
将记录未成功的命令,Sync
将仅记录修改数据的命令。例如,命令del non-existing-key
将由监视器记录,但在运行同步时不会显示。pjngdqdw4#
2017年
现在有一个发布/订阅机制,你可以使用
node-redis
模块。见这里的具体文档。(也适用于redis-mock
测试)同一个通道可以有多个订阅者(侦听器),在您的情况下,这将是集合的关键。
快速样本:(有关实施详细信息,请参阅上述文档)
envsm3lx5#
如果您使用java.
redis-replicator
实现了redis复制协议。更多细节请参考references