了解网络缓存 (Redis)

Seo*_*Lee 7 caching redis node-redis

我正在开发一个从 API 提供程序接收数据的网络应用程序。现在我需要一种方法来缓存数据,以防止再次为相同的数据调用提供程序。

然后我偶然发现了 Redis,它似乎符合我的目的,但我不是 100% 清楚使用 Redis 缓存的概念。我检查了他们的文档,但我并没有真正遵循他们所说的。

假设我刚刚部署了我的网站,我的第一个访问者叫做 A。由于 A 是第一个访问的人,我的网站将通过 API 提供者请求一组新数据,几秒钟后,页面将加载了 A 想要的数据。

我的网站将此数据缓存到 Redis 以服务将来访问同一页面的访问者。

现在我有我的第二个访客 B。

B 访问与 A 相同的页面 url,并且因为我的网站将此数据存储在缓存中,所以 B 是从缓存中提供的,并且加载时间将比 A 经历的加载时间快得多。

我的理解是否符合网络缓存的概念?

我一直认为根据用户进行缓存,因此我在网站上的交互对其他人没有影响或没有任何影响,但 Redis 似乎在每个应用程序的基础上工作。

Rob*_*ley 8

是的,您对 Web 缓存的理解是正确的,但它可能会变得更加复杂,具体取决于您的用例。Redis 本质上是一个键值存储。因此,如果您想要应用程序级缓存,您的理论键/值对将如下所示:

key: /path/to/my/page
value: <html><...whatever...></html>
Run Code Online (Sandbox Code Playgroud)

如果您想要用户级缓存,您的理论密钥将略有变化:

key: visitorA|/path/to/my/page
value: <html><...whatever...></html>
Run Code Online (Sandbox Code Playgroud)

有道理?本质上,键中会有一个标签来定义用户(但它通常是一个散列或其他东西,而不是纯文本字符串)。

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