前言
随着互联网的高速发展,网页应用程序的用户体验越来越重要,页面加载速度成了提升用户体验的关键。而缓存系统就是一个可以大幅度提升页面加载速度的必不可少的组件。本文将介绍如何使用 Express.js 和 Redis 构建一个较完整的缓存系统,从而提升网页应用程序的用户体验。
什么是 Redis
Redis 是一种 In-Memory 数据库,其数据都被存储在内存中,使得读写速度高达 100,000+ 请求/秒。它具有以下优点:
- 快速:Redis 是在内存中进行操作的,比传统的 RDBMS(关系型数据库管理系统)快得多;
- 简单:Redis 使用简单的键/值存储模型;
- 可扩展:Redis 可以水平扩展到多个节点,从而处理更多数据负载;
- 多功能:Redis 支持许多数据结构,如字符串、列表、集合、有序集合和哈希表。
Redis 是非常受欢迎的缓存解决方案,大型网站和应用程序使用 Redis 作为其高效缓存系统的一部分。
Express.js 和 Redis 缓存系统的工作流程
使用 Redis 缓存有助于提高应用程序的读取速度,特别是当应用程序需要从磁盘或其他远程位置获取数据时。下面是使用 Express.js 和 Redis 缓存系统的示意图:
- 客户端请求数据;
- 从 Redis 中检索数据,并在请求命中缓存时返回数据;
- 如果 Redis 中没有请求的数据,则向数据库发出请求,并将结果存储到 Redis 中;
- 将结果发送回客户端。
构建 Express.js 和 Redis 缓存系统的步骤
在本文中,我们将使用 Node.js 上的 Express.js 框架,并使用 Redis 作为我们的缓存存储。
步骤 1:安装 Express.js 和 Redis
使用 npm 进行安装:
npm install express redis
步骤 2:连接到 Redis
首先,让我们通过在项目文件夹中创建一个名为 redis.js
的文件来连接到 Redis:
const redis = require("redis"); const client = redis.createClient(); client.on("error", function (error) { console.error(error); }); module.exports = client;
通过运行 redis.createClient()
,我们已经成功地连接到本地 Redis 服务器。
步骤 3:创建 Express.js 应用程序
接下来,我们可以使用以下命令创建一个基本的 Express.js 应用程序:
// javascriptcn.com 代码示例 const express = require("express"); const app = express(); const port = 3000; // Routing app.get("/", (req, res) => { res.json({ message: "Welcome to Express.js and Redis caching application." }); }); // Listen app.listen(port, () => { console.log(`Server is running on port ${port}.`); });
在代码中,我们使用 Express.js 创建了一个基本路由,并指定应用程序运行的端口为 3000。
步骤 4:使用 Redis 缓存
我们已经启动了 Express.js 应用程序,并创建了一个基本路由。接下来,我们需要创建一个 middleware
函数,该函数在路由请求到达前检查 Redis 是否有相应的缓存存在。如果 Redis 中找到了请求的数据,则将数据发送回客户端,从而避免数据库查找。
有关 middleware
函数的详细信息,请参见官方文档。
// javascriptcn.com 代码示例 const redisClient = require("./redis"); app.get("/api/:key", cache, async (req, res) => { const { key } = req.params; const data = { key, value: Math.random() }; redisClient.set(key, JSON.stringify(data)); res.send(data); }); function cache(req, res, next) { const { key } = req.params; redisClient.get(key, (err, data) => { if (err) throw err; if (data !== null) { res.send(JSON.parse(data)); } else { next(); } }); }
在这里,我们使用 redisClient.get()
函数来检查 Redis 中是否缓存了请求的数据。如果 Redis 有缓存数据,则立即返回缓存的值。否则,我们继续执行下一个 middleware
,检索数据库,并将结果保存到 Redis 中。
步骤 5:执行应用程序
现在让我们执行我们的应用程序并查看运行结果:
node index.js
结果如下:
Server is running on port 3000.
访问http://localhost:3000/api/test,你会看到以下输出:
{ "key": "test", "value": 0.42031304265528743 }
如果您多次执行上述操作,则会发现返回值 value
总是不同的,因为我们使用的是随机数实现的。
如果您再次执行访问,则结果也将从 Redis 中获取。
总结
在本文中,我们讨论了如何使用 Express.js 和 Redis 构建一个完整的缓存系统,从而提高应用程序的读取速度。了解了 Redis 的工作原理以及如何在 Express.js 应用程序中使用它的基本知识之后,我们开始编写代码,将数据存储到 Redis 中并从 Redis 中获取缓存的值。
最后,我们可以看到,使用 Redis 可以大幅度提高应用程序的性能和响应速度。同时,还提供多种数据结构,使得我们可以轻松地存储、检索和操作数据,从而使我们的代码更加优雅和高效。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/652b8ac57d4982a6ebd60084