10

我正在使用 ASP.NET/C# 开发一个 Web 应用程序,该应用程序需要可扩展以处理高用户负载(可能会在 Web 场中运行)。由于它将迎合大量用户,大约 100 万以上,但在线用户数量将在 30K-50K 左右。我打算使用缓存(基于提供程序),并且想知道:

  1. 缓存所有用户以提高性能是个好主意吗?我计划缓存所有其他通用数据,例如设置等,但是将所有用户缓存在内存中的效率如何?如果用户更改了他/她的个人资料,我将仅在缓存中重新加载该特定用户(拥有所有用户的集合)。对这种方法有什么建议吗?

  2. 使用上述用户缓存时,我是否需要担心锁定?只有一个编辑配置文件的人是用户自己,这将是一个原子操作,尽管在不同的线程中会有多个读取操作。因此,在从缓存中获取用户或更新特定用户时,我应该使用锁吗?

谢谢

阿西夫

4

2 回答 2

6

将任何只对单个用户有用的东西放在全局缓存中通常是一个坏主意,并且是性能杀手。优化您的数据库查询,您将处于更好的状态。

作为一般的经验法则,您应该只将从数据库中获取成本高昂的内容保存在缓存中,并且不止一个用户希望同时查看该信息。比如排名前100的产品列表什么的。从数据库中获取相对便宜且仅对一个人有用的少量数据应保留在原处。

缓存极大地增加了复杂性,在网络场中更是如此。除非绝对必要,否则不要引入不必要的复杂性。等到您遇到实际的性能问题后再尝试解决它。

于 2010-08-26T13:11:37.027 回答
0

缓存用户可能是个好主意。但这取决于您将为每个用户缓存多少数据,以及从存储数据的任何位置检索该数据的成本。

对于锁定 - 其他任何人都可以编辑用户的个人资料(如管理员)吗?这会是普遍现象吗?如果是这样,您可能需要进行一些锁定。否则,如果只有用户可以编辑自己的东西,我就不会打扰。

于 2010-08-26T13:11:12.643 回答