2

我正在尝试决定是否要在数据库表中或仅在内存中跟踪我的在线用户。在内存中对我来说似乎更容易并且很有意义,因为如果重新启动服务器,每次系统启动时我都必须截断表。此外,我系统上的每个用户都可以添加联系人(其他用户),每次用户登录时,我都会获得他或她是朋友的用户列表,并向他们发送 signalR 消息,告知用户在线。因此,对于这样的事情,我觉得从内存中获取数据会快得多,但是当我决定向外扩展时会发生什么。

4

3 回答 3

3

对于这样的事情,我觉得从内存中获取数据会快得多

过早的优化是万恶之源,我鼓励您将信息保存在数据库中并根据需要检索它。然后,如果在线用户数量开始出现性能问题,您可以运行指标并进行更改。

于 2012-08-30T20:46:44.520 回答
2

如果您需要在生产环境中添加更多服务器,则需要将 Session 保留在数据库中,因此您的在线用户列表将需要在数据库中,以便可以在所有服务器之间共享。

于 2012-08-30T20:42:58.997 回答
0

如果您开始向外扩展,则无论如何都需要在服务器之间共享此信息,因此我会从一开始就将其放入数据库中。JabbR是 SignalR 的参考应用程序,它也这样做,所以它不会太糟糕。

于 2012-08-31T10:29:16.103 回答