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

使用StackExchange.Redis的Redis键空间通知

鲁泰宁
2023-03-14
问题内容

我环顾四周,无法找到如何使用StackExchange.Redis库在Redis上执行对键空间通知的订阅。

检查可用的测试,我发现使用通道是pubsub,但这更像是服务总线/队列,而不是订阅特定的Redis键事件。

是否可以使用StackExchange.Redis来利用此Redis功能?


问题答案:

常规订户API应该可以正常工作-在用例上没有任何假设,并且应该可以正常工作。

但是,我确实同意这是一种内置功能,可能会受益于API上的辅助方法以及也许不同的委托签名-
来封装keyapace通知的语法,这样人们就无需重复它。为此:建议您记录一个问题,以免被遗忘。

有关如何订阅键空间事件的简单示例

首先,检查Redis键空间事件已启用很重要。例如,应该在 Set 类型的键上启用事件。可以使用以下CONFIG SET命令完成此操作:

CONFIG SET notify-keyspace-events KEs

启用键空间事件后,就可以订阅pub-sub频道:

using (ConnectionMultiplexer connection = ConnectionMultiplexer.Connect("localhost"))
{
    IDatabase db = connection.GetDatabase();
    ISubscriber subscriber = connection.GetSubscriber();

    subscriber.Subscribe("__keyspace@0__:*", (channel, value) =>
        {
            if ((string)channel == "__keyspace@0__:users" && (string)value == "sadd")
            {
                // Do stuff if some item is added to a hypothethical "users" set in Redis
            }
        }
    );
}

在此处了解有关键空间事件的更多信息。



 类似资料:
  • 问题内容: 密钥空间通知对于我最近开发的Web API至关重要。 我们有天蓝色的Redis设置。该API大部分都可以使用,我们使用通知来确定是否需要更新内存缓存上的数据。 现在,我们要处理刷新事件,以便在刷新Redis数据库时清除本地内存缓存。 但是我们不能通过Keyspace通知获取flushdb事件。 并且键空间事件被启用为“ AKE”。“ AKE”字符串表示所有事件。 PS:我们可以通过“

  • 本文向大家介绍.net core使用redis基于StackExchange.Redis,包括了.net core使用redis基于StackExchange.Redis的使用技巧和注意事项,需要的朋友参考一下 .net core使用redis基于StackExchange.Redis教程,具体如下 一.添加引用包 StackExchange.Redis Microsoft.Extensions.

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

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

  • 问题内容: 我正在尝试使用模式来检索与模式匹配的所有键。 码 问题答案: 在项目的主页链接在哪里,,等?其中提供了有关如何访问此文件的详细信息,以及为什么未打开它。我应该指出,您应该避免在生产服务器上使用。如果可用,该库将自动尝试使用它-危害较小,但仍应谨慎对待。最好将相关密钥显式存储在集合或哈希中。

  • 问题内容: 我已经读过,为了连接到Azure Redis缓存,最好遵循以下做法: 根据Azure Redis文档: 与Azure Redis缓存的连接由ConnectionMultiplexer类管理。此类设计为在整个客户端应用程序中共享和重用,并且不需要在每个操作的基础上创建。 那么,在我的ASP.net MVC应用程序之间共享ConnectionMultiplexer的最佳实践是什么?应该在G