当前位置: 首页 > 面试题库 >

使用flushdb的Redis键空间通知

郑博
2023-03-14
问题内容

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

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

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

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

订阅代码如下。

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

问题答案:

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

毕竟,“键空间 通知” 是有关 单个键
事件的通知。每个通知都与一个键关联。对于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通知。



 类似资料:
  • 问题内容: 我环顾四周,无法找到如何使用StackExchange.Redis库在Redis上执行对键空间通知的订阅。 检查可用的测试,我发现使用通道是pubsub,但这更像是服务总线/队列,而不是订阅特定的Redis键事件。 是否可以使用StackExchange.Redis来利用此Redis功能? 问题答案: 常规订户API应该可以正常工作-在用例上没有任何假设,并且应该可以正常工作。 但是,

  • 问题内容: 我有两个Redis客户端,在一个文件中,我有一个简单的脚本设置并删除了Redis密钥: 在第二个文件中,我有一个Redis客户端充当订户: 关键的“占位符”已设置,那么是否有充分的理由使我在“消息”处理程序中未获得任何输出? 问题答案: 您忘记了订阅用户客户端订阅特定的频道。此外,如果要监视所有事件,则需要使用基于模式的订阅。 您可能想要执行以下操作(未测试): 请参阅Redis文档和

  • Note 本文档翻译自: http://redis.io/topics/notifications 。 Warning 键空间通知功能目前仍在开发中,这个文档所描述的内容,以及功能的具体实现,可能会在未来数周内改变,敬请知悉。 功能概览 键空间通知使得客户端可以通过订阅频道或模式, 来接收那些以某种方式改动了 Redis 数据集的事件。 以下是一些键空间通知发送的事件的例子: 所有修改键的命令。

  • FLUSHDB 清空当前数据库中的所有 key。 此命令从不失败。 可用版本: >= 1.0.0 时间复杂度: O(1) 返回值: 总是返回 OK 。 redis> DBSIZE # 清空前的 key 数量 (integer) 4 redis> FLUSHDB OK redis> DBSIZE # 清空后的 key 数量 (integer) 0

  • 问题内容: 是否可以在Redis中创建名称空间? 从我发现的结果来看,所有全局命令(计数,全部删除)都适用于所有对象。有没有一种创建子空间的方法,以便这些命令在上下文中受到限制? 我不想为此设置不同的Redis服务器。 我认为答案是“否”,并且想知道为什么没有实现它,因为它似乎是一个有用的功能,而且没有太多开销。 问题答案: Redis服务器可以处理多个已编号的数据库。我认为默认情况下它提供了32

  • FLUSHDB 清空当前数据库中的所有 key。 此命令从不失败。 可用版本: >= 1.0.0 时间复杂度: O(1) 返回值: 总是返回 OK 。 redis> DBSIZE # 清空前的 key 数量 (integer) 4 redis> FLUSHDB OK redis> DBSIZE # 清空后的 key 数量 (integer) 0