【问题标题】:Can redis key space notifications be pushed to the redis stream instead of pub/sub channel是否可以将 redis 键空间通知推送到 redis 流而不是 pub/sub 通道
【发布时间】:2019-01-10 10:59:31
【问题描述】:

我们有一个要求,即我们需要收到有关 Redis 数据结构更改的通知。根据我的研究,我发现我可以使用 Redis 密钥空间通知来做同样的事情。但是,Redis 密钥空间通知将事件发送到 Redis 发布/订阅通道,该通道会触发并忘记,即一旦客户端失去连接,所有事件都会丢失,直到连接再次启动。

Redis 流解决了这个问题。我还想使用 Redis 流的消费者组功能。那么有什么方法可以将 Redis 键空间通知推送到 Redis 流而不是 Redis 发布/订阅通道?

【问题讨论】:

    标签: redis stream publish-subscribe


    【解决方案1】:

    使用当前的 Redis v5.0.3 可以做到这一点的唯一方法是使用 Modules API 开发一个模块来注册键空间通知、处理它们并将相关消息添加到 Stream 中。

    【讨论】:

    • 非常感谢 Itamar 提供的信息。只需要确认。
    • 当然 - 如果您想讨论 Redis、模块开发或任何事情,请随时在 redislabs dot com 的 itamar 与我联系;)
    【解决方案2】:

    使用RedisGears,注册一个监听器非常简单,它会自动将每个事件写入流。

    例如以下 register.py 脚本将为 person:* 键上的每个 HSETHMSET 调用编写事件前缀到 mystream 流。

    注册.py:

    GearsBuilder() \
    .foreach(lambda x: execute('XADD', "mystream", '*', *sum([[k,v] for k,v in x.items()],[]))) \
    .register(prefix="person:*", eventTypes=['HSET', 'HMSET'])
    

    要运行它,您只需调用:

    $ gears-cli run register.py
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多