【问题标题】:redis hset and key space notificationredis hset 和 key space 通知
【发布时间】:2015-04-20 15:21:50
【问题描述】:

我正在使用 Redis 2.8 密钥空间 Pub/Sub 通知,我想知道在HSET 命令之后是否可以收到 哪个 字段更改的通知?

目前我收到了关于密钥的通知,因为 HSET 命令,但我最好知道设置了哪个字段 - 我知道我可以在收到通知后再次阅读该设置以查看差异,但我觉得它不是很有效。

【问题讨论】:

  • 如果您使用的是 StackExchange.Redis,我开始研究 IDatabase 实现,该实现会引发自定义通知,包括已触摸哈希字段的名称。您可以对正在使用的任何 Redis 库执行相同的操作。 github.com/johnnycardy/StackRedis.L1/tree/master/…

标签: redis


【解决方案1】:

虽然这并不是您真正想要的,但它仍然可以用作解决方法。 尝试拥有唯一的哈希键名,例如:

redis.hmset('task:{}'.format(unique_id), status='running')

当你收到一条消息时,它会是这样的:

(b'__keyspace@0__:task:c81b8373-b5ea-4be0-b8f1-b490e7280898', 'hset')

现在,知道唯一的任务 ID,您可以:

redis.hget('task:{}'.format(unique_id), 'status')
> running

【讨论】:

    【解决方案2】:

    标准 Redis 键空间通知不包括有关已更改数据的数据,特别是不包括有关已触摸 Hash 字段的信息。

    【讨论】:

    • 我意识到了这一点。所以没有希望了吗?我可以做些什么来实现我正在寻找的东西?
    • 总有希望 - 请不要绝望 :) 例如,您可以在 Hash 中使用另一个字段来存储最近更改的字段名称,而不是仅使用通知。当然,您的应用程序需要保持更新,并且您的通知订阅者总是有可能错过更新(或更多),但对于简单的 pubsub 也是如此,所以我想您可以接受。
    猜你喜欢
    • 2012-06-18
    • 2014-12-11
    • 1970-01-01
    • 2017-05-04
    • 1970-01-01
    • 2018-03-16
    • 2018-10-08
    • 2017-02-08
    • 2020-06-29
    相关资源
    最近更新 更多