Redis与应用内缓存的比较

3

使用Redis缓存userId-UserName对和NewsId-NewsDomainName等数据的优缺点是什么?为什么不应该将这些数据缓存在应用程序内存中,而是创建字典进行缓存?我认为使用字典会比使用Redis更快,是吗?

2个回答

5
根据工作负载的不同,你可能需要其中一种或两种缓存策略的组合。为什么呢?
  • 进程内缓存更快(适用于延迟),而且更重要的是,它不会产生任何网络流量以获取一个命中(适用于可扩展性);
  • 远程缓存,如Redis等,允许您保留所有服务器都可以访问的缓存数据的一个副本*,因此它使用更少的内存(除非您只有一个应用程序服务器,这似乎不太可能),并且不容易出现数据不一致问题(如果您处理用户数据,这似乎很重要)。

在缓存集群或任何数据集群中,当请求特定数据的请求发送到一小组服务器时,最大的问题之一是热点。在这种情况下,您可能想要结合两者 - 在本地缓存热键,但非常简短,以防止压倒后端服务器,但不要过长时间,以至于结果是长时间提供陈旧数据。

*尽管在集群中有多个缓存服务器,并且集群管理具有服务器驱逐/重新加入逻辑但没有数据刷新逻辑,您可能会在某些服务器上拥有陈旧的数据。


0

如果你有多个服务器怎么办?你的第二个服务器会知道第一个服务器存储了什么吗?不会。这可能是你需要使用Redis的主要原因。

如果你在服务器上存储了大量数据,也会影响服务器的性能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接