嗨,斯巴达!

在本文中,我将与您分享如何在您的 NestJS 后端中使用 Redis 作为可扩展的缓存系统。

完整的源代码和文档可在此处获得 🙂

这个缓存系统模块将被添加到 React/Node/MySQL starter 的顶部。这个启动器已经在这篇文章中呈现给你。

Redis 3个字

Redis 是一个开源的内存数据结构存储,可以用作缓存数据库消息代理(如 JMS 或 RabbitMQ)。即使在关键应用程序中,Redis 也用于生产,因为它通过 Redis Sentinel 提供高可用性,并通过 Redis Cluster 提供自动分区。

配置您的 NestJS 后端以使用 Redis

本节是 NestJS 的官方文档的顶部开销,以使其适应 web 启动器。

  • 您应该安装以下软件包:
npm install cache-manager
npm install cache-manager-redis-store

进入全屏模式 退出全屏模式

  • 您应该指定后端环境变量:
    export const environment = {
        ...,
        redis: {
            host: process.env.LOCAL_IP,
            port: process.env.REDIS_PORT,
            defaultTtl: 86400
        }
    };

进入全屏模式 退出全屏模式

  • 您现在应该创建一个 NestJS 模块MyRedisCacheModule,它的服务MyRedisCacheService通过cache-manager与您的缓存进行交互。

set:允许您设置缓存值。

get:允许检索值(当 TTL 过期时将未定义)。

del:允许您删除存储的密钥。

控制器和服务:

  • 获取Redis中的缓存值

  • 在 Redis 中存储一个值

  • 删除存储的密钥

控制器和服务可用这里🙂

为开发环境设置 Redis

  • 初始启动器的docker-compose文件启动我们的本地数据库(附加卷)、我们的后端和我们的前端。我们将修改它以在使用docker-compose up启动我们的 Web 应用程序时在本地启动一个 redis 服务器。
services:
  db:
    ...

  back:
    ...

  cache:
    image: "redis:alpine"
    ports:
      - ${REDIS_PORT}:${REDIS_PORT}
    env_file: ./.env

  front:
    ...

进入全屏模式 退出全屏模式

(可选)要为此服务指定密码,您可以在docker-compose.yaml中添加command: redis-server --requirepass yourpassword并在后端添加密码redisStore:auth_pass: 'password'

  • 使用docker-compose up启动应用程序时,docker 会加载.env中的环境变量。您将在此文件中添加要使用的 redis 端口:
...
REDIS_PORT = 6379
...

进入全屏模式 退出全屏模式

你的 redis 缓存系统现在在本地活跃🙂

您可以使用 Postman 测试上一节中创建的测试端点!

您想在生产中使用缓存系统吗?让我们跳到下一节。

为 prod 环境设置 Redis

从您的代码角度来看,您只需调整环境变量以路由到生产 AWS ElastiCache。对于您的 Redis 实例,如果不处理大量数据,非集群模式应该足够了。此步骤要阅读的最佳文档是AWS 为 ElastiCache提供的优秀文档。

结论

我希望这个模块可以帮助您在尝试使用 Redis 缓存优化后端性能时节省一些时间。有什么问题,我会照常出现在评论区!

链接:

  • 共享启动器及其模块的平台:快速模块化项目

  • 模块“带有 Redis 和 NestJS 的可扩展缓存系统”在此处可用。

如果您欣赏这篇文章,请不要犹豫并点赞❤️

Logo

Redis社区为您提供最前沿的新闻资讯和知识内容

更多推荐