将 Redis 缓存添加到您的 NestJS 后端Redis 三句话将您的 NestJS 后端配置为使用 Redis 为开发环境设置 Redis 为生产环境设置 Redis 结论
嗨,斯巴达! 在本文中,我将与您分享如何在您的 NestJS 后端中使用 Redis 作为可扩展的缓存系统。 完整的源代码和文档可在此处获得 🙂 这个缓存系统模块将被添加到 React/Node/MySQL starter 的顶部。这个启动器已经在这篇文章中呈现给你。 Redis 3个字 Redis 是一个开源的内存数据结构存储,可以用作缓存、数据库或消息代理(如 JMS 或 RabbitMQ)
嗨,斯巴达!
在本文中,我将与您分享如何在您的 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 的可扩展缓存系统”在此处可用。
如果您欣赏这篇文章,请不要犹豫并点赞❤️
更多推荐
所有评论(0)