gpt4 book ai didi

redis - SignalR.Redis 是如何工作的?

转载 作者:IT王子 更新时间:2023-10-29 05:54:41 25 4
gpt4 key购买 nike

除了阅读 github 中的代码外,是否有关于 SignalR.Redis 包如何工作的任何白皮书类型的文档?具体来说,我想知道它向 Redis 添加了哪些键、更新/删除策略等。当查看 Redis 内部时,我所看到的只是在以下调用中指定的一个键(即“SignalR.Redis.Sample”):

GlobalHost.DependencyResolver.UseRedis(server, Int32.Parse(port), password, "SignalR.Redis.Sample");

这个key好像只是redis中的一个计数器。我假设正在创建并快速删除其他 key ,以促进连接到 Redis 的每个应用程序服务器之间的消息。

最佳答案

不,没有白皮书,它大约有 200 行代码,所以吃不下那么多。

在 SignalR 中,每条消息都通过称为消息总线的东西。当您想要跨节点(或进程或应用程序域)扩展时,此总线的实现需要能够与您的应用程序的每个实例对话。为此,您可以使用 RedisMessageBus。 Redis 有一个 pub sub机制以及它存储键值对的能力,我们只将前者用于 SignalR。

OffTopic: 这非常重要! SignalR 不是可靠的消息传递,它是一种连接抽象。我们可能会为长轮询缓冲消息,但您**不能*依赖消息永远存在。如果您有重要的消息需要坚持,那就坚持吧。

每个 Web 服务器连接到一个(或新实现中的多个)redis 事件以在它们之间发送消息。当一个或多个客户端收到一条消息时,它会被发送到背板 (redis) 并到达所有 Web 服务器。每个网络服务器从 redis 获取消息并将其存储在本地缓存中。此本地缓存是为 SignalR 客户端(浏览器等)提供服务的地方。

横向扩展设计的一个重要部分是游标。游标表示特定客户端在无限消息流中的位置。当客户端在断开连接后重新连接或长轮询连接在收到消息后返回时,它会要求总线从某个游标值开始获取所有内容。游标由消息总线实现定义,我们已经在最新的资源中对其进行了规范化(在撰写本文时尚未发布,但我不会在这里详细介绍)。当前redis实现中的游标只是一个递增的数字,没有什么太复杂的。

希望这能让您对它的工作原理有所了解。

关于redis - SignalR.Redis 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13054592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com