我正在尝试决定是否要在数据库表中或仅在内存中跟踪我的在线用户。在内存中对我来说似乎更容易并且有意义,因为如果服务器重新启动,我将不得不在每次系统启动时截断表。此外,我系统上的每个用户都可以添加联系人(其他用户),每次用户登录时,我都会获得他或她是朋友的用户列表,并向用户发送用户在线的signalR消息。所以对于这样的事情我觉得从内存中获取数据会快得多,但是当我决定扩展时,不会发生什么。
答案 0 :(得分:3)
对于这样的事情,我觉得从内存中获取数据会更快
过早优化是所有邪恶的根源,我鼓励您将信息保存在数据库中并根据需要进行检索。然后,如果在线用户的数量开始出现性能问题,您可以运行指标并进行更改。
答案 1 :(得分:2)
如果您需要向生产环境添加更多服务器,则需要将Session保留在数据库中,因此您的在线用户列表需要位于数据库中,以便可以在所有服务器之间共享。 / p>
答案 2 :(得分:0)
如果你开始扩展,你还需要在服务器之间共享这些信息,所以我从一开始就把它放在数据库中。 JabbR,这是SignalR的参考应用程序,也是这样做的,所以它不会太糟糕。