Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 倾听Redis中的变化?_Node.js_Redis - Fatal编程技术网

Node.js 倾听Redis中的变化?

Node.js 倾听Redis中的变化?,node.js,redis,Node.js,Redis,我希望能够在我的redis集合中进行任何更改时运行回调。回调将把键和值作为输入。这样的事情可能吗 谢谢?有两种选择: 使用命令-它跟踪到达Redis的每个命令,您可以分析并查看何时触摸到您的收藏 如果您“拥有”写入集合的代码,请向其他代码(回调)发送信号。你可以使用这个频道 EDITRedis实际上将在2.8版中实现此功能。请参见安特里兹的博客文章:。更新:无论谁在读这篇文章,这些都是古老的答案,忽略它们。您需要的是Redis密钥空间通知,它已经存在了很多年了。请参见您也可以使用sync命令像跟

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

谢谢?

有两种选择:

  • 使用命令-它跟踪到达Redis的每个命令,您可以分析并查看何时触摸到您的收藏

  • 如果您“拥有”写入集合的代码,请向其他代码(回调)发送信号。你可以使用这个频道


  • EDITRedis实际上将在2.8版中实现此功能。请参见安特里兹的博客文章:。

    更新:无论谁在读这篇文章,这些都是古老的答案,忽略它们。您需要的是Redis密钥空间通知,它已经存在了很多年了。请参见

    您也可以使用sync命令像跟随者一样连接到Redis服务器。查看如何快速介绍

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

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

  • 连接到Redis服务器并发出
    SYNC
    命令
  • 保存并解析dump.rdb文件。构建初始数据集。A有空
  • 解析后面的命令。因为它们在Redis协议中,所以可以从现有的Redis库开始
  • 对于收到的每个命令,调用回调
  • 这似乎是一个很大的工作,但你应该能够黑客这相当容易。它也将成为一个很好的开源库

    编辑:同步v/s监视器

  • Monitor
    是一个调试命令。响应格式可以(并且已经)随时间变化<代码>同步用于主->从复制,因此将得到更好的支持
  • 监视器
    将发出所有命令,包括只读命令<代码>同步仅获取修改数据的命令
  • Monitor
    将记录lua脚本中执行的各个命令
    Sync
    将只传输整个lua脚本,因此您必须自己解析脚本。这确实是
    sync
    的交易破坏者
  • Monitor
    将记录未成功的命令,
    Sync
    将只记录修改数据的命令。例如,监视器将记录命令
    del non-existing key
    ,但在运行sync时不会显示该命令
  • 
    com.moilioncircle
    
    2017年

    现在有了一个发布/订阅机制,您可以使用
    节点redis
    模块。见具体文件。(也可使用redis mock进行测试)

    同一频道可以有多个订阅者(侦听器),在您的情况下,这些订阅者是收藏的关键

    快速示例:(有关实施细节,请参见上述文档)


    谢谢斯利帕蒂!你能给我一个关于使用monitor进行更新与使用monitor进行更新的高级概述吗?相关的功能请求:和
    monitor
    降低了成本,所以你最好不要经常在生产中运行它
    <dependency>
        <groupId>com.moilioncircle</groupId>
        <artifactId>redis-replicator</artifactId>
        <version>2.5.0</version>
    </dependency>
    
    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]