缓存在Node.js中是必需的,因为它可以提高Web应用程序的性能和可扩展性。缓存允许经常访问的数据存储在快速的内存存储中,因此可以快速检索它,而无需重新计算或从较慢的持久存储层中重新计算或获取。这可以大大减少服务器上的负载,改善用户的响应时间,并通过减少昂贵的数据库查询的需求来使应用程序更具扩展性。此外,缓存还可以帮助减少需要通过网络传输的数据量,这可以帮助改善整体用户体验。
在Node.js中实现缓存的一种流行工具是内存数据存储Redis。在本文中,我们将详细介绍在Node.js应用程序中实现redis缓存的步骤。
步骤1:安装redis服务器 -
Windows:
- 从官方网站(https://github.com/microsoftarchive/redis/releases)下载Redis Windows安装程序
- 运行安装程序以在系统上安装redis。
- 打开命令提示符并运行命令redis-cli以启动redis服务器。
macOS:
- 通过运行命令brew install redis安装redis。
- 通过运行命令redis服务器启动redis服务器。
要检查redis服务器是否正确运行,请在终端中输入ping。服务器应使用乒乓球响应,表明服务器正在启动并运行。
步骤2:安装node.js
的redis客户端要在node.js应用程序中使用redis,我们需要安装redis client for node.js。
npm i redis
步骤3:创建REDIS客户端实例
接下来,我们将在我们的node.js应用程序中创建一个redis client实例。
const redis = require("redis");
const client = redis.createClient({
host: "127.0.0.1",
port: 6379,
});
创建REDIS客户端时,重要的是指定服务器正在运行的主机和端口,以便客户端可以轻松连接到服务器。
步骤4:创建中间件来处理缓存
我们将创建一个中间件功能来处理我们的node.js应用程序中的缓存。此功能将检查请求的数据是否已存储在缓存中,如果是,则将其返回缓存的数据。如果数据不在缓存中,则该函数将在链中调用下一个中间件,并将响应存储在缓存中以供将来请求。
function cache(req, res, next) {
const key = "__express__" + req.originalUrl || req.url;
client.get(key).then(reply => {
if (reply) {
res.send(JSON.parse(reply));
} else {
res.sendResponse = res.send;
res.send = (body) => {
//expire in 1 min
client.set(key, JSON.stringify(body), {'EX':60});
res.sendResponse(body);
};
next();
}
}).catch(err=>{
console.log(err);
res.status(500).send(err)
});
}
在缓存函数中,我们根据URL创建一个键,以便我们可以根据URL检索和存储数据并发送响应。该函数还为缓存数据设置了一分钟的时间(TTL),之后它将到期,下一个请求将不得不再次检索数据。
步骤5:使用缓存
您的应用程序中的中间件
要在我们的应用程序中使用缓存中间件,我们需要使用App.use()函数将其添加到Express中间件堆栈中。
app.use(cache);
步骤6:使用缓存
在此示例中,我们将使用缓存的中间件来生成大量数据的简单端点。
app.get("/data", (req, res) => {
let data = 0;
for (let i = 1; i < 100000000; i++) {
data += 1;
}
res.json(data);
});
步骤7:将REDIS客户端与服务器连接
app.listen(3000, () => {
console.log("Server listening on port 3000");
client.connect().then(()=> {
console.log('redis is connected')
})
});
启动Express服务器后,我们在Redis客户端及其相应服务器之间建立了连接,确保了无缝数据存储和检索。
注意:
有关详细的逐线实现,请确保在Caching in node.js
上查看我们的存储库文件
要访问更多Advance Node.js主题,请访问Advance Node.js.
通过实现REDIS缓存,您可以显着提高Node.js应用程序的性能和可扩展性。缓存是减少服务器负载和改善响应时间的强大工具,Redis是在Node.js中实现缓存的热门选择。通过遵循本文概述的步骤,您可以轻松地将redis缓存添加到node.js应用程序中,并开始从提高性能和可伸缩性的好处。