Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 带Redis背板的信号器扩展_Asp.net_Signalr - Fatal编程技术网

Asp.net 带Redis背板的信号器扩展

Asp.net 带Redis背板的信号器扩展,asp.net,signalr,Asp.net,Signalr,我有一个网站今天使用信号,它的工作很好。现在我想实现Redis背板,以便可以在多个服务器上扩展应用程序 问题是,我在静态ConcurrentDictionary中保留了关于客户机的附加信息,例如名称和客户机连接ID。当我扩展到多个服务器时,这当然行不通,我想知道在我构建自己的“RedisDictionary”之前,是否有人可以分享一些最佳实践 谢谢您可以创建一个Redis背板来发布和订阅您的个人客户端信息 将客户端信息存储为json字符串,并使用客户端名称作为通道名称。然后,您可以将所有服务器订

我有一个网站今天使用信号,它的工作很好。现在我想实现Redis背板,以便可以在多个服务器上扩展应用程序

问题是,我在静态ConcurrentDictionary中保留了关于客户机的附加信息,例如名称和客户机连接ID。当我扩展到多个服务器时,这当然行不通,我想知道在我构建自己的“RedisDictionary”之前,是否有人可以分享一些最佳实践


谢谢

您可以创建一个Redis背板来发布和订阅您的个人客户端信息


将客户端信息存储为json字符串,并使用客户端名称作为通道名称。然后,您可以将所有服务器订阅到客户端。无论何时对客户进行更改,它的更新信息将被发布,您可以通过反序列化json字符串来更新存储的客户端信息。

Signal在Redis中存储的唯一内容是消息id,然后它使用通道获得有关新消息的通知-因此Redis中没有存储连接id。我知道,这就是我在ConcurrentDictionary中存储额外数据的原因。问题是,将字典或哈希表移动到Redis是否有最佳实践,因为它需要跨web服务器共享?您可以将它们存储在Redis中,也可以使用Redis频道向其他服务器广播。在这两种情况下都有权衡(线程安全与查找连接信息)。很难说哪一个更好-这可能取决于什么是重要的-延迟与一致性等,这是特定于应用程序的。