密钥空间通知对于我最近开发的Web API至关重要。
我们有天蓝色的Redis设置。该API大部分都可以使用,我们使用通知来确定是否需要更新内存缓存上的数据。
现在,我们要处理刷新事件,以便在刷新Redis数据库时清除本地内存缓存。 但是我们不能通过Keyspace通知获取flushdb事件。 并且键空间事件被启用为“ AKE”。“ AKE”字符串表示所有事件。
PS:我们可以通过“ set”事件(例如“ keyevent @ 2 :set”)获得通知
订阅代码如下。
subscriber.Subscribe( "*", (channel, value) => { // Some codes here });
正如提到的其他答案一样,没有这样的通知。
毕竟,“键空间 通知” 是有关 单个键 事件的通知。每个通知都与一个键关联。对于keyspace事件,键名称是通道名称的一部分。对于keyevent事件,键名称是消息。
keyspace
keyevent
PUBLISH __keyspace@0__:key_name comamnd PUBLISH __keyevent@0__:command key_name
发送通知的每个命令必须有一个键作为参数。例如del key,set key val。但是,该flushdb命令没有键作为参数。该命令不影响单个键。而是,它删除数据库中的所有键。因此,没有此类通知。否则,您对频道有什么期望?所有已删除的密钥?这不是一个好主意。
del key
set key val
flushdb
但是,您可以模拟一个事件flushdb
flushdb-event
set flushdb-event 0
subscribe __keyspace@0__:flushdb-event
set flushdb-event 1
这样,您可以获得模拟flushdb通知。