通过REDIS缓存优化Node.js性能
#网络开发人员 #node #redis #caching

缓存在Node.js中是必需的,因为它可以提高Web应用程序的性能和可扩展性。缓存允许经常访问的数据存储在快速的内存存储中,因此可以快速检索它,而无需重新计算或从较慢的持久存储层中重新计算或获取。这可以大大减少服务器上的负载,改善用户的响应时间,并通过减少昂贵的数据库查询的需求来使应用程序更具扩展性。此外,缓存还可以帮助减少需要通过网络传输的数据量,这可以帮助改善整体用户体验。
在Node.js中实现缓存的一种流行工具是内存数据存储Redis。在本文中,我们将详细介绍在Node.js应用程序中实现redis缓存的步骤。

步骤1:安装redis服务器 -
Windows:

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.

的Out存储库

通过实现REDIS缓存,您可以显着提高Node.js应用程序的性能和可扩展性。缓存是减少服务器负载和改善响应时间的强大工具,Redis是在Node.js中实现缓存的热门选择。通过遵循本文概述的步骤,您可以轻松地将redis缓存添加到node.js应用程序中,并开始从提高性能和可伸缩性的好处。