了解网络缓存 (Redis)
Understanding web caching (Redis)
我正在开发一个从 API 提供商接收数据的网络应用程序。现在我需要一种缓存数据的方法,以避免再次为相同的数据调用提供程序。
然后我偶然发现了 Redis,它似乎符合我的目的,但我并不是 100% 清楚使用 Redis 进行缓存的概念。我已经查看了他们的文档,但我并没有真正理解他们所说的内容。
假设我刚刚部署了我的网站,我的第一个访客叫 A。由于 A 是第一个访问者,我的网站将通过 API 提供商请求一组新数据,并且几秒钟后,页面将加载 A 想要的数据。
我的网站将此数据缓存到 Redis,以便为将来访问同一页面的访问者提供服务。
现在我迎来了第二位访客B。
B 访问了与 A 相同的页面 url,因为我的网站将此数据存储在缓存中,B 从缓存中获得服务,加载时间将比 A 快得多。
我的理解符合web缓存的概念吗?
我一直认为缓存是基于用户的,所以我在网站上的交互对其他人没有任何影响,但 Redis 似乎是基于应用程序工作的。
是的,您对网络缓存的理解是正确的,但它可能会变得更加复杂,具体取决于您的用例。 Redis 本质上是一个键值存储。因此,如果您想要应用程序级缓存,理论上的 key/value 对将如下所示:
key: /path/to/my/page
value: <html><...whatever...></html>
如果你想要用户级缓存,你的理论密钥会稍微改变一下:
key: visitorA|/path/to/my/page
value: <html><...whatever...></html>
有道理吗?本质上,密钥中会有一个标签来定义用户(但它通常是哈希值或其他东西,而不是纯文本字符串)。
有为不同的网络开发框架和内容管理系统编写的 redis 客户端库,它们将定义它们如何处理缓存(即特定于用户或特定于应用程序)。如果您正在编写自定义 Web 应用程序,那么您可以选择应用程序级缓存或用户级缓存,并使用缓存做任何您想做的事情。
我正在开发一个从 API 提供商接收数据的网络应用程序。现在我需要一种缓存数据的方法,以避免再次为相同的数据调用提供程序。
然后我偶然发现了 Redis,它似乎符合我的目的,但我并不是 100% 清楚使用 Redis 进行缓存的概念。我已经查看了他们的文档,但我并没有真正理解他们所说的内容。
假设我刚刚部署了我的网站,我的第一个访客叫 A。由于 A 是第一个访问者,我的网站将通过 API 提供商请求一组新数据,并且几秒钟后,页面将加载 A 想要的数据。
我的网站将此数据缓存到 Redis,以便为将来访问同一页面的访问者提供服务。
现在我迎来了第二位访客B。
B 访问了与 A 相同的页面 url,因为我的网站将此数据存储在缓存中,B 从缓存中获得服务,加载时间将比 A 快得多。
我的理解符合web缓存的概念吗?
我一直认为缓存是基于用户的,所以我在网站上的交互对其他人没有任何影响,但 Redis 似乎是基于应用程序工作的。
是的,您对网络缓存的理解是正确的,但它可能会变得更加复杂,具体取决于您的用例。 Redis 本质上是一个键值存储。因此,如果您想要应用程序级缓存,理论上的 key/value 对将如下所示:
key: /path/to/my/page
value: <html><...whatever...></html>
如果你想要用户级缓存,你的理论密钥会稍微改变一下:
key: visitorA|/path/to/my/page
value: <html><...whatever...></html>
有道理吗?本质上,密钥中会有一个标签来定义用户(但它通常是哈希值或其他东西,而不是纯文本字符串)。
有为不同的网络开发框架和内容管理系统编写的 redis 客户端库,它们将定义它们如何处理缓存(即特定于用户或特定于应用程序)。如果您正在编写自定义 Web 应用程序,那么您可以选择应用程序级缓存或用户级缓存,并使用缓存做任何您想做的事情。