2

我有一个使用 SignalR 的聊天功能,并且有一个 sql server 背板。当人们聊天时,两台服务器上都会显示消息。但是,如果您刷新页面,显然聊天记录已经消失了。

因此,当人们说某事时,我会将其缓存在内存中的字典中。问题是,该消息不在另一台服务器的内存中,因此如果有人刷新并且负载平衡,则该消息不会出现。

无论如何要订阅获取服务器和背板之间发生的事件,以便我可以使两个缓存保持同步?

谢谢!

4

1 回答 1

1

处理此问题的最简单方法是将消息保存在数据库中,您试图避免的事情可能是因为SQL它不是最快的数据库。

现在,我将使用另一个SignalR背板 -与 Redis一起使用,原因如下:

  • Redis是内存缓存,因此每个操作都会快得多(因为所有内容都加载到 RAM 中)
  • SQL您具有与背板相同的功能
  • Redis有一个非常好的发布/订阅服务,这正是你需要的。
  • Redis如果您将字典存储在其中非常快,您实际上可能不需要字典

由于 Microsoft 提供了这样做的示例,因此所有内容都受支持,您甚至可能只使用 pub.sub 机制(尽管有 2 个服务这样做 -SQL可能Redis不值得)。

无论如何,这就是我将如何进行。

希望这可以帮助。祝你好运!

于 2015-09-01T11:52:03.433 回答