Redis 缓存

17 Mar 2025 | 5 分钟阅读

引言

Redis 是一个开源的数据结构存储,主要用作数据库、消息代理缓存。我们可以将 Redis 视为一个 No-SQL 数据库,它在内存中存储特定的键值对数据,从而在需要时支持持久化数据存储。

此外,Redis 可以支持各种类型的数据结构,包括有序集、哈希映射和集合、字符串等。它还为各种用例提供了支持,构成了专门定义的数据结构交付性能优化的采用。使用 Redis 的一个重要方面是在需要以最少的时间将数据提取并提供给用户或客户端的情况下。这意味着 Redis 是执行时间特定操作的非常有效的机制。

什么是缓存?

缓存可以定义为一种存储数据或多个文件的精确副本的方法,以允许应用程序在快节奏的环境中处理数据。缓存主要在 RAM 中进行,因为它是最快的内存,可以访问经常使用或放置的数据。缓存的主要目标是实现速度和敏捷性,以执行更快的处理操作,从而没有延迟。

Redis 与缓存

使用 Redis 缓存的先决条件是熟悉 Node.js 及其应用程序。在本示例中,我们将创建一个 node.js 应用程序,其中我们将定义如何使用 Redis 进行缓存。通常,Redis 中的缓存过程非常简单。每当用户请求数据从启用了缓存的路由接收数据时,我们首先检查接收到的数据是否已经以缓存的形式存在。如果它已经存在,它将被无缝地发送到用户请求的响应,因为 Redis 是高效的。但是,如果缓存中不存在数据,我们可能称之为缓存未命中。为了解决这个问题,我们必须首先从源数据库获取数据或考虑从外部 API 获取数据并将其发送给客户端通知他。我们还需要确认,如果下次在缓存中找到检索到的数据,应该有一个快速无缝的响应。

如果您的系统未安装 Redis,请使用以下命令进行安装。

在此步骤之后,下一步是确保 Redis 与您的服务器正常工作。为了确保这一点,我们可能需要 ping 它以使用以下命令进行检查。

如果您收到 pong 的响应,这意味着您的服务器工作正常。我们现在可以继续进一步的实现。

我们现在可能需要设置我们的服务器端口并添加事件监听器,因为我们正在使用 node.js。要做到这一点,我们需要初始化应用程序的样板代码。使用以下代码片段作为参考。

现在,我们可以为我们的应用程序使用任何外部 API。我们还可以考虑到从外部 API 接收到的数据是 JSON 格式,因为我们正在使用 node.js。示例 API 请求可能看起来像这样。

https://developers.github.com/companies.json?search=node.js

注意:上面的链接只是一个示例,说明了采用外部 API 的示例请求是如何发生的。它只是 GitHub API 请求的示例表示。

现在,我们需要定义将接收数据并将其发送回客户端的 API 的外部路由。这是它的做法。

现在,我们在这里要实现的下一个主要任务是建立缓存。这可以通过建立我们的应用程序与 Redis 服务器的连接来实现。如果我们之前安装了 Redis 包,就可以做到。代码如下。

我们现在几乎完成了。最后的任务是比较从缓存接收到的数据。检查数据是否存在或为 null 是使用下面显示的示例代码片段完成的。

在上面的代码片段中,要从外部 API 获取数据,我们需要先将其存储在 Redis 中,然后再将其发送到 node 服务器,以便它可以响应数据,而不仅仅是发出 API 请求。setex 函数用于将数据存储在缓存中。单独使用此函数而不是通用的常规函数可能不允许我们设置时间。因此,使用此函数以键值对的形式设置时间是有优势的。指定时间的 set 值将提醒 Redis,当时间间隔过去或过期时,它将自动从缓存中删除键值对。

总结

在本教程中,我们已经涵盖了 Redis 和缓存机制的几乎所有方面。本教程的主要目的是从头开始讨论 Redis 缓存。我们了解了什么是 Redis 以及如何通过它来实现缓存。我们还考虑了一些编码示例以及如何确定缓存数据是否已存在或为 NULL。最后,我们遇到了一个错误消息,该消息显示了一个方法,该方法在没有数据或数据不存在时作为来自外部 API 的错误响应。


下一个主题Redux Thunk