【发布时间】:2018-03-15 20:04:46
【问题描述】:
我今天有一个使用 SignalR 的网站,它运行良好。现在我想实现 Redis 背板,以便我可以在多个服务器上扩展应用程序。
问题是我在静态 ConcurrentDictionary 中保留了有关客户端的其他信息,例如名称和客户端 connectionId。当我扩展到多台服务器时,这当然不起作用,我想知道在我构建自己的 “RedisDictionary” 之前是否有人可以分享一些最佳实践?
谢谢
【问题讨论】:
-
SignalR 在 Redis 中存储的唯一内容是消息 ID,然后它使用通道来获取有关新消息的通知 - 因此 Redis 中没有存储连接 ID。
-
我知道这一点,这就是我在 ConcurrentDictionary 中存储额外数据的原因。问题是,是否有将字典或哈希表移动到 Redis 的最佳实践,因为它需要跨 Web 服务器共享?
-
您可以将它们存储在 Redis 中,也可以使用 Redis 频道广播到其他服务器。在这两种情况下都有权衡(线程安全与查找连接信息)。很难说哪个更好 - 它可能取决于什么是重要的 - 延迟与一致性等,这是特定于应用程序的。