一尘不染

使用flushdb的Redis键空间通知

redis

密钥空间通知对于我最近开发的Web API至关重要。

我们有天蓝色的Redis设置。该API大部分都可以使用,我们使用通知来确定是否需要更新内存缓存上的数据。

现在,我们要处理刷新事件,以便在刷新Redis数据库时清除本地内存缓存。 但是我们不能通过Keyspace通知获取flushdb事件。
并且键空间事件被启用为“ AKE”。“ AKE”字符串表示所有事件。

PS:我们可以通过“ set”事件(例如“ keyevent @ 2 :set”)获得通知

订阅代码如下。

 subscriber.Subscribe(
            "*",
            (channel, value) =>
            {
                // Some codes here
            });

阅读 255

收藏
2020-06-20

共1个答案

一尘不染

正如提到的其他答案一样,没有这样的通知。

毕竟,“键空间 通知” 是有关 单个键
事件的通知。每个通知都与一个键关联。对于keyspace事件,键名称是通道名称的一部分。对于keyevent事件,键名称是消息。

PUBLISH __keyspace@0__:key_name comamnd
PUBLISH __keyevent@0__:command key_name

发送通知的每个命令必须有一个键作为参数。例如del keyset key val。但是,该flushdb命令没有键作为参数。该命令不影响单个键。而是,它删除数据库中的所有键。因此,没有此类通知。否则,您对频道有什么期望?所有已删除的密钥?这不是一个好主意。

但是,您可以模拟一个事件flushdb

  1. 设置一个特殊的键,例如flushdb-eventset flushdb-event 0
  2. 订阅相应的频道: subscribe __keyspace@0__:flushdb-event
  3. 在致电之前设置特殊键flushdbset flushdb-event 1

这样,您可以获得模拟flushdb通知。

2020-06-20