1、下载
TypeScript
npm install --save @nestjs-modules/ioredis ioredis
2、全局模块中引用
TypeScript
RedisModule.forRootAsync({
useFactory: (configService: ConfigService) => {
return {
type:"single",
url: configService.get('redis.url')
};
},
inject: [ConfigService],
}),
整体如下:
TypeScriptimport { Global, Module } from '@nestjs/common'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { TypeOrmModule, TypeOrmModuleOptions } from '@nestjs/typeorm'; import configuration from '../../config/index'; import { JwtModule } from '@nestjs/jwt'; import { APP_FILTER, APP_GUARD, APP_INTERCEPTOR } from '@nestjs/core'; import { JwtGuard } from 'src/utils/jwt/jwt-guard'; import { JwtStrategy } from 'src/utils/jwt/jwt-strategy'; import { WinstonService } from 'src/utils/logger/winston-service'; import { CatchLoggerFilter } from 'src/utils/logger/catch-logger-filter'; import { ResponseLoggerInterceptor } from 'src/utils/logger/response-logger-interceptor'; import { RedisModule } from '@nestjs-modules/ioredis'; import { RequirePermissionGuard } from 'src/utils/premission/require-premission.guard'; @Global() @Module({ imports: [ ConfigModule.forRoot({ isGlobal: true, load: [configuration], }), TypeOrmModule.forRootAsync({ inject: [ConfigService], useFactory: (configService: ConfigService) => { return { type: 'mysql', ...configService.get('db.mysql'), timezone: '+08:00', // logger: 'advanced-console', entities: [__dirname + '/../**/*.entity.{js,ts}'], } as TypeOrmModuleOptions; }, }), RedisModule.forRootAsync({ inject: [ConfigService], useFactory: (configService: ConfigService) => { return { type:"single", url: configService.get('redis.url'), }; }, }), JwtModule.registerAsync({ inject: [ConfigService], global: true, useFactory: (configService: ConfigService) => { return { secret: configService.get('jwt.secretkey'), // signOptions: { expiresIn: configService.get('jwt.expiresin') }, }; }, }) ], providers: [ JwtStrategy, { provide: APP_GUARD, useFactory: (configService: ConfigService) => { return new JwtGuard(configService); }, inject: [ConfigService], }, { provide: APP_GUARD, useClass: RequirePermissionGuard }, { provide: WinstonService, inject: [ConfigService], useFactory: (configService: ConfigService) => { return new WinstonService(configService); } }, { provide: APP_FILTER, useClass: CatchLoggerFilter }, { provide: APP_INTERCEPTOR, useClass: ResponseLoggerInterceptor } ], exports: [ WinstonService ], }) export class ShareModule { }
3、使用
TypeScript
// 引入
import { InjectRedis } from '@nestjs-modules/ioredis';
import Redis from 'ioredis';
TypeScript
// 注入
constructor(
@InjectRedis() private readonly redis: Redis
) { }
TypeScript
// 使用
this.redis.set(CacheEnum.LOGIN_TOKEN_KEY + data.userId, access_token, 'EX', 60 * 60 * 2);
this.redis.del(CacheEnum.LOGIN_TOKEN_KEY + userId);
this.redis.get(base_enum_1.CacheEnum.LOGIN_TOKEN_KEY + payload.userId)