学习

使用 Redis 哈希管理域对象

Simon Prickett
作者
Simon Prickett, Redis 首席开发者倡导者

在本模块中,您将了解我们如何在应用程序中使用 Redis 哈希来建模用户和位置数据。

编码练习#

在您的第一个编码练习中,您将添加一个新的路由,该路由接受用户的 ID 并返回他们的全名。

使用您的 IDE,打开您从 GitHub 存储库克隆的 node-js-crash-course 文件夹。打开文件 src/routes/user_routes.js 并找到路由 /user/:userId/fullname,它看起来像这样

// EXERCISE: Get user's full name.
router.get(
  '/user/:userId/fullname',
  [param('userId').isInt({ min: 1 }), apiErrorReporter],
  async (req, res) => {
    const { userId } = req.params;
    /* eslint-disable no-unused-vars */
    const userKey = redis.getKeyName('users', userId);
    /* eslint-enable */

    // TODO: Get the firstName and lastName fields from the
    // user hash whose key is in userKey.
    // HINT: Check out the HMGET command...
    // https://redis.ac.cn/commands/hmget
    const [firstName, lastName] = ['TODO', 'TODO'];

    res.status(200).json({ fullName: `${firstName} ${lastName}` });
  },
);

在本练习中,您将修改代码以通过从 Redis 中检索所请求用户的 firstName 和 lastName 字段来返回用户的全名。

首先,确保您的服务器仍在运行,如果没有,请使用以下命令启动它

$ npm run dev

接下来,浏览到 https://localhost:8081/api/user/5/fullname

您应该看到

{
  "fullName": "TODO TODO"
}

查看 Redis HMGET 命令的文档,它从 Redis 哈希中检索多个命名字段。您需要添加调用 Redis 客户端的 hmget 函数的代码,然后将返回的值放置到 firstNamelastName 变量中。您应该能够使用一次对 hmget 的调用来检索这两个值。有关如何调用 Redis 命令的指南,请查看 /user/:userId 路由的代码,该路由调用 HGETALL 命令。

nodemon 将在您每次保存更改时自动重新启动服务器。

准备测试您的解决方案时,请浏览到 https://localhost:8081/api/user/5/fullname,您应该看到

{
  "fullName": "Alejandro Reyes"
}

如果您需要我们团队的帮助, 加入我们的 Discord.

外部资源#

在此视频中,Justin 解释了什么是 Redis 哈希,并展示了常见的 Redis 哈希命令的工作原理