理解Web缓存(Redis)

7
我正在开发一个从API提供商接收数据的 Web 应用程序。我现在需要一种缓存数据的方式,以避免为相同的数据再次调用 API。
然后我发现了 Redis,它似乎可以满足我的需求,但是我并不完全清楚使用 Redis 进行缓存的概念。我已经查看了他们的文档,但我并没有真正理解他们所说的内容。
假设我刚刚将我的网站部署到生产环境,并且我的第一个访客叫做 A。由于 A 是第一个访问者,因此我的网站将从 API 提供商请求一组新的数据,并在几秒钟后,以 A 需要的数据加载页面。
我的网站将这些数据缓存到 Redis 中,以为未来访问相同页面的访问者提供服务。
现在我有第二个访客 B。
B 访问与 A 相同的页面 URL,并且因为我的网站在缓存中存储了这些数据,所以 B 从缓存中获取服务,加载时间比 A 更快。
我的理解是否符合 Web 缓存的概念?
我总是认为缓存是按用户而非应用程序来存储的,因此我在网站上的交互对其他人没有任何影响,但 Redis 似乎是基于应用程序存储的。
1个回答

8
是的,你对Web缓存的理解是正确的,但是根据你的使用情况,它可能会变得更加复杂。Redis本质上是一个键值存储器。因此,如果你希望进行应用级别的缓存,你的理论键/值对应如下:
key: /path/to/my/page
value: <html><...whatever...></html>

如果您需要进行用户级别的缓存,那么您理论上的键只需要稍作更改:

key: visitorA|/path/to/my/page
value: <html><...whatever...></html>

明白吗?基本上,密钥中将有一个标签来定义用户(但通常是哈希或其他内容,而不是纯文本字符串)。

有为不同Web开发框架和内容管理系统编写的Redis客户端库,它们将定义如何处理缓存(即特定于用户或特定于应用程序)。如果您正在编写自定义Web应用程序,则可以选择应用程序级缓存或用户级缓存,并对缓存进行任何其他操作。


感谢您抽出时间解释这个问题。它有很大帮助。应用程序级缓存在Web中是否更常见?这些选择的利弊是什么? - Seong Lee
我猜应用级缓存更常见,因为它通常比用户级缓存提供更好的性能改进。只有当您的同一用户多次访问相同的资源密集页面时,用户级缓存才真正有效。应用级缓存更加简单易行,并且您可以获得显着的缓存优势(因为所有用户都受益);但是一旦内容在用户之间不同,您就必须降级到用户级缓存。您还可以按页面部分进行缓存,其中某些div适用于所有用户,而某些则是特定于用户的。希望这有所帮助! - Rob Bailey
还有其他类型的缓存可以加速处理。例如,PHP具有APC缓存,这是对代码本身进行字节码级别的缓存,可以轻松地将延迟减少一半,同时允许用户特定的体验。非常容易使用,并且还有很多其他的选择。 - Rob Bailey
谢谢。它帮了很多忙。 - Seong Lee

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