nestjs 连接redis

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],
}),

整体如下:

TypeScript 复制代码
import { 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)
相关推荐
范什么特西7 小时前
回答知识总结04(redis)
数据库·redis·缓存
码农颜8 小时前
5.4.1 锁分类
java·数据库·mysql
云深处@8 小时前
【数据库】MySQL 入门
数据库·学习·mysql
梦远星帆8 小时前
SQLyog社区版下载
数据库·mysql·sqlyog
科力锐品牌君10 小时前
行业龙头|科力锐全链路防勒索 + 多中心容灾方案,构筑河南翔宇医疗业务安全闭环!
网络·数据库·分布式·安全·数据安全·备份
zyplayer-doc10 小时前
zyplayer-doc企业知识库能做什么:从文档创建、权限管理到AI问答的完整能力
大数据·javascript·数据库·人工智能·pdf·word
会编程的吕洞宾12 小时前
LangChain4j Tool Calling 实战:让大模型自动查数据库发邮件,一句话搞定复杂任务
数据库·人工智能
math_hongfan12 小时前
鸿蒙离线数据缓存高级架构:弱网预加载/离线数据优先级/同步冲突解决/上线后数据合并策略
学习·缓存·华为·架构·harmonyos·鸿蒙
知行合一。。。13 小时前
DeepAgents--01--Agent和OpenClaw的相关概念
android·数据库
c2385613 小时前
# Mini OJ — 项目详解文档
开发语言·数据库·c++