对 Azure Redis 连接限制(最多 X 个连接)感到困惑

Confused about the Azure Redis Connection Limit (Up to X Connections)

我正在考虑在 Azure 中托管的 .NET 中构建一些 signalR 应用程序(自托管工作者)。

我想使用 Azure Redis 进行横向扩展并设置一个背板,但是当我去设置一个新的 Redis 缓存时,我对 'Up to X connections' 的实际含义感到困惑。

例如,'CO Basic 250MB Cache' 有 'Up to 256 connections' 而 'C1 Standard 1GB Cache' 有 'Up to 1,000 connections'

确认一下,我可以 'Up to 256 connections' 表示我可以(理论上)最多有 256 个工作线程同时推送 SignalR 消息......或者这是否意味着连接总数(用户)从我的网站连接到我的 SignalR,然后在 Redis 缓存中推送消息?

显然,如果它意味着 256 个工作人员,那很好 - 但如果它意味着来自我网站的不同连接的总数,那就是一个交易破坏者

谢谢,如果这是一个愚蠢的问题,我们深表歉意!

连接限制与正在读取或写入 Redis 的工作线程数无关。它是关于物理 TCP 连接的。 Redis 支持 pipelining。许多客户端库都是线程安全的,因此您可以使用同一个物理连接对象同时从多个线程写入。

从 SignalR 背板的角度来看,SignalR websocket 连接与 Redis 缓存服务器的连接数无关。

用户的 SignalR 连接是与 SignalR Hub 服务器的连接,后者在横向扩展的情况下又充当 Redis 客户端。 signalr 中的 Redis 客户端使用标准的 ConnectionMultiplexer 进行连接,它在内部处理与 redis 的连接。并且指南是为整个应用程序使用单个多路复用器,或者使用最少的数量。

Redis 客户端是 send/receive 消息而不是每个操作的 create/access 键,因此打开一个通道并在该通道上交换所有消息是有意义的.

我不确定 connectionmultiplexer 如何管理 Redis 连接,但我们确实使用 Redis 背板在 Azure 上为我们的应用程序进行 SignalR 横向扩展。

我们对应用程序进行了负载测试,有大约 20 万个始终处于活动状态的 Signalr websocket 连接扩展到 10 台服务器上,Azure Redis 缓存连接数平均徘徊在 50 左右,几乎从未超过 60。 .

我认为可以肯定地说,Azure Redis 缓存的连接限制不是 SignalR 的限制因素,除非您扩展到数百台服务器。