Redis 与应用内缓存

Cod*_*men 3 c# asp.net-mvc caching redis

使用 Redis 缓存 userId-UserName 对、NewsId-NewsDomainName 等数据有什么好处和坏处?为什么我不应该将这些数据缓存在应用程序内存中而不是 creatinf Dictionatries 中?我认为它必须比使用 redis 快得多?谢谢!

小智 5

根据您的工作负载情况,您可能需要一种或另一种缓存策略,或者两种缓存策略的组合。为什么?

  • 进程内缓存更快(有利于延迟),更重要的是,它不会产生任何网络流量来获得成功(有利于可扩展性);
  • 远程缓存,Redis 或类似的,允许您保留所有服务器访问的缓存数据的一份副本*,因此它使用更少的内存(除非您只有一个应用服务器,这似乎不太可能),并且不太容易出现数据不一致问题(如果您正在处理用户数据,这似乎很重要)

在缓存集群或任何对特定数据的请求发送到一小组服务器的数据集群中,最大的问题之一是热点。在这种情况下,您可能希望在本地组合缓存热键,但非常简单,以防止后端服务器不堪重负,但不要太长以至于导致长时间提供陈旧数据。

* 不过,如果集群中有多个缓存服务器,并且集群管理具有服务器弹出/重新接纳逻辑但没有数据刷新逻辑,则某些服务器上可能会有陈旧数据。