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