我有一个使用 SignalR 的聊天功能,并且有一个 sql server 背板。当人们聊天时,两台服务器上都会显示消息。但是,如果您刷新页面,显然聊天记录已经消失了。
因此,当人们说某事时,我会将其缓存在内存中的字典中。问题是,该消息不在另一台服务器的内存中,因此如果有人刷新并且负载平衡,则该消息不会出现。
无论如何要订阅获取服务器和背板之间发生的事件,以便我可以使两个缓存保持同步?
谢谢!
我有一个使用 SignalR 的聊天功能,并且有一个 sql server 背板。当人们聊天时,两台服务器上都会显示消息。但是,如果您刷新页面,显然聊天记录已经消失了。
因此,当人们说某事时,我会将其缓存在内存中的字典中。问题是,该消息不在另一台服务器的内存中,因此如果有人刷新并且负载平衡,则该消息不会出现。
无论如何要订阅获取服务器和背板之间发生的事件,以便我可以使两个缓存保持同步?
谢谢!
处理此问题的最简单方法是将消息保存在数据库中,您试图避免的事情可能是因为SQL
它不是最快的数据库。
现在,我将使用另一个SignalR
背板 -与 Redis一起使用,原因如下:
Redis
是内存缓存,因此每个操作都会快得多(因为所有内容都加载到 RAM 中)SQL
您具有与背板相同的功能Redis
有一个非常好的发布/订阅服务,这正是你需要的。Redis
如果您将字典存储在其中非常快,您实际上可能不需要字典由于 Microsoft 提供了这样做的示例,因此所有内容都受支持,您甚至可能只使用 pub.sub 机制(尽管有 2 个服务这样做 -SQL
可能Redis
不值得)。
无论如何,这就是我将如何进行。
希望这可以帮助。祝你好运!