当前位置: 首页 > news >正文

nestjs cache manager 很ioredis配合使用方案

1. 安装依赖

npm i @tirke/node-cache-manager-ioredis cache-manager

2. 创建redis 模块和服务

1. 生成并编辑module

生成module
nest g mo redis
编辑模块
// redis.module.ts
import { Module } from '@nestjs/common';
// import { redisClient } from './redis.client';
import { ioRedisStore, RedisCache } from '@tirke/node-cache-manager-ioredis';
import { caching } from 'cache-manager';
@Module({providers: [{provide: 'REDIS_CLIENT',useValue: async () => {const redisCache: RedisCache = await caching(ioRedisStore, {host: '192.168.50.3', // default valueport: 6379, // default valuepassword: '',ttl: 600,});// listen for redis connection error eventconst cache = redisCache.store;cache.client.on('error', (error: unknown) => {console.error('Redis error:', error);});},},],exports: ['REDIS_CLIENT'],
})
export class RedisModule {}

2.生成并编辑redis service

生成service
nest g s redis
编辑service
// redis.service.ts
import { Injectable } from '@nestjs/common';
import { Inject } from '@nestjs/common';
import { Redis } from 'ioredis';@Injectable()
export class RedisService {constructor(@Inject('REDIS_CLIENT') private readonly client: Redis) {}async set(key: string, value: any): Promise<void> {await this.client.set(key, value);}async get(key: string): Promise<string | null> {return this.client.get(key);}async del(key: string): Promise<number> {return this.client.del(key);}
}

note: 记得删除app.mudule.ts 中的引用

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { MongooseModule } from '@nestjs/mongoose';import { ConfigModule } from '@nestjs/config';
// import { RedisModule } from './redis/redis.module';刪除@Module({imports: [ConfigModule.forRoot({isGlobal: true,envFilePath: ['.env.development.local', '.env.development', '.env'],//If a variable is found in multiple files, the first one takes precedence.}),MongooseModule.forRoot(process.env.MONGO_URI),UserModule,AuthModule,MemberModule,//  RedisModule,刪除],controllers: [AppController],providers: [AppService,RedisService],
})
export class AppModule {}

3. 调用服务

1.使用的模块导入RedisService和模块RedisModule
...
import { RedisService } from 'src/redis/redis.service';
import { RedisModule } from 'src/redis/redis.module';@Module({imports: [RedisModule,....],providers: [...RedisService],exports: [AuthService],controllers: [AuthController],
})
export class AuthModule {}
2. 调用
import { Injectable } from '@nestjs/common';
import { RedisService } from 'src/redis/redis.service';
@Injectable()
export class AuthService {constructor(private readonly redisService: RedisService,) {}async login(member: MemberLoginDto) {...await this.redisService.set(`token:${accessToken}`, memberInfo);}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 政安晨【零基础玩转各类开源AI项目】基于本地Linux Ubuntu系统部署及应用DDSP-SVC:基于DDSP(可微分数字信号处理)的实时端到端歌声转换系统
  • 操作系统迁移(CentOs -> Ubuntu)
  • 先导小型五轴数控加工中心助力职业教育
  • 数据结构和算法之线性结构
  • C++中模板的初级使用函数模板(刚刚接触模板概念的小白也能明白)
  • 基于python+django+vue的影视推荐系统
  • 【Kubernetes】常见面试题汇总(十七)
  • 【计算机网络】第一章
  • 容器内的Nodejs应用如何获取宿主机的基础信息-系统、内存、cpu、启动时间,以及一个df -h的坑
  • 【计网】从零开始使用TCP进行socket编程 ---服务端业务模拟Xshell
  • 变脸大师:基于OpenCV与Dlib的人脸换脸技术实现
  • 掌握Spring Boot数据库集成:用JPA和Hibernate构建高效数据交互与版本控制
  • 【学习笔记】数据结构(六 ②)
  • 如何切换淘宝最新镜像源npm
  • 数字化转型中的企业蓝图构建:基于业务能力建模的全面解读与战略实施指南
  • php的引用
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • cookie和session
  • download使用浅析
  • git 常用命令
  • java概述
  • leetcode386. Lexicographical Numbers
  • Redis在Web项目中的应用与实践
  • 对超线程几个不同角度的解释
  • 经典排序算法及其 Java 实现
  • 网络应用优化——时延与带宽
  • 限制Java线程池运行线程以及等待线程数量的策略
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • #知识分享#笔记#学习方法
  • (3)医疗图像处理:MRI磁共振成像-快速采集--(杨正汉)
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (SpringBoot)第七章:SpringBoot日志文件
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (二)springcloud实战之config配置中心
  • (十六)串口UART
  • (十三)Flask之特殊装饰器详解
  • (四)stm32之通信协议
  • (转载)深入super,看Python如何解决钻石继承难题
  • .cn根服务器被攻击之后
  • .Mobi域名介绍
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .NET开源、简单、实用的数据库文档生成工具
  • .NET企业级应用架构设计系列之技术选型
  • .pyc文件是什么?
  • /proc/stat文件详解(翻译)
  • @antv/x6 利用interacting方法来设置禁止结点移动的方法实现。
  • [20150629]简单的加密连接.txt
  • [20190416]完善shared latch测试脚本2.txt
  • [Android 数据通信] android cmwap接入点
  • [Angularjs]ng-select和ng-options
  • [ASP]青辰网络考试管理系统NES X3.5
  • [Big Data - Kafka] kafka学习笔记:知识点整理
  • [C#]winform部署yolov9的onnx模型