nestjs 连接redis

1、下载

npm install --save @nestjs-modules/ioredis ioredis

2、全局模块中引用

RedisModule.forRootAsync({useFactory: (configService: ConfigService) => {return {type:"single",url: configService.get('redis.url')  };},inject: [ConfigService],
}),

整体如下:

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、使用

// 引入
import { InjectRedis } from '@nestjs-modules/ioredis';
import Redis from 'ioredis';
// 注入
constructor(@InjectRedis() private readonly redis: Redis
) { }
// 使用
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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/94764.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/94764.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

需求管理需要哪些角色配合

需求管理是项目管理的关键组成部分,它确保项目目标得到准确理解并能顺利实现。有效的需求管理需要多个角色的紧密配合,包括项目经理、产品经理、需求分析师、开发人员、测试人员等。这些角色共同协作,确保需求从收集、分析、实施到验证的每一…

SqlHelper类的方法详细解读和使用示例

在 C# 数据库编程中,SqlHelper类是简化 SQL Server 操作的重要工具,它封装了ADO.NET的底层细节,让开发者能更专注于业务逻辑。以下从方法原理、使用示例和实战技巧三个方面进行详细说明。 一、SqlHelper 核心方法原理与对比 SqlHelper的方法…

智能一卡通系统通过集成身份识别、权限管理、数据联动等技术,实现多场景一体化管理。以下是多奥基于最新技术趋势和应用案例的系统解析

智能一卡(码、脸)通系统包括消费系统、梯控、门禁、停车场管理、访客机等,需要了解这些系统的集成应用和最新技术发展。多奥打算从以下几个维度来讲解。智能一卡通系统的整体架构和主要功能模块各子系统(门禁、梯控、停车场、访客管理等)的技…

嵌入式学习日志————USART串口协议

1.通信接口通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统通信协议:制定通信的规则,通信双方按照协议规则进行数据收发名称引脚双工时钟电平设备USARTTX(数据发送脚)、RX(数据接收脚…

微软硬件笔试面试核心题型详细解析

微软硬件笔试面试核心题型详细解析 本专栏预计更新90期左右。当前第42期-笔试面试核心题型详细解析. 本文一共4个章节,核心内容如下。 微软作为全球顶尖的科技公司,其硬件工程师的选拔标准极高。笔试不仅考察扎实的理论基础,更注重解决实际问题的能力、对新技术的理解以…

CMake构建学习笔记21-通用的CMake构建脚本

在之前使用CMake构建程序的脚本(CMake构建学习笔记-目录)中,大部分内容都有比较强的相似性,那么是不是可以这些相似的内容提取出来作为一个单独的脚本,在构建具体的程序的时候再去调用这个脚本呢?这样做的好…

无人机和无人系统的计算机视觉-人工智能无人机

无人机和无人系统的计算机视觉-人工智能无人机将计算机视觉与无人系统相结合,可以提升其自主或半自主执行复杂任务的能力。这些系统将图像数据与其他机载传感器(例如 GNSS/GPS、IMU、LiDAR 和热像仪)融合,以解读周围环境并执行精确…

【开题答辩全过程】以 基于hadoop架构的教学过程监控系统为例,包含答辩的问题和答案

个人简介:一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧…

坎坷基金路

2025年8月27日上午10:59从基金委官网上中外合作入口查到自己的基金中了。心情顿时五味杂陈,回想起写基金忙碌的9个月,各位专家对我的指导,嘴角楠楠的说:感恩。自己觉着比较重要的几个点:1、立意必须基于自己的过往研究…

[n8n]

docs:n8n工作流管理系统 本项目帮助管理和探索n8n工作流。 它能自动扫描和分析工作流文件,提取关键信息如名称、触发器和关联服务。 所有数据将存入可搜索的数据库,并通过REST API提供访问。 可以快速定位特定工作流、查看详细描述&#xff0…

[手写系列]Go手写db — — 第二版

[手写系列]Go手写db — — 第二版 第一版文章:[手写系列]Go手写db — — 完整教程 整体项目Github地址:https://github.com/ziyifast/ZiyiDB请大家多多支持,也欢迎大家star⭐️和共同维护这个项目~ 本文主要介绍如何在 ZiyiDB 第一版的基础上…

私有化大模型基础知识

私有化大模型基础知识 文章目录私有化大模型基础知识0x01.开源闭源2. 数据成本:昂贵且隐形的开销3. 研发投入:人力与时间成本总结:总成本量化更重要的是:持续投入和机会成本0x02.模型大小0x03.模型参数0x04.CPU和GPU0x05.GPU和模型…

Django时区处理

Django 的时区处理机制是为了确保在全球部署应用时,时间数据始终一致、可控,并能根据用户或系统需求灵活转换。下面我来系统地拆解一下 Django 的时区处理方式,帮你掌握从配置到实际应用的全过程。🧭 1. 基础配置:USE_…

SqlHelper类库的使用方法

使用 SqlHelper.dll 时,首先需要在项目中引用该 DLL,然后通过其封装的方法简化 SQL Server 数据库操作。以下是常见操作的 C# 示例代码:查看SqlHelper.dll方法内容// 替换为实际的SqlHelper.dll路径 using System.Reflection; using Microsof…

苍穹外卖项目实战(日记十一)-记录实战教程及问题的解决方法-(day3-3)完善菜品分页查询功能

菜品分页查询 (1)需求分析 (2)代码开发分析 DTO 前端给后端 ,VO 后端给前端; vo是进行页面展示,dto是前后端数据交互的,pojo是对应数据库表字段 (3)DishCo…

C++ 力扣 704.二分查找 基础二分查找 题解 每日一题

文章目录二分查找:从基础原理到代码实现二分查找的特点:细节是坑,学会是宝算法重点:原理不只是“有序”,模板要懂不要背题目描述:LeetCode 704. 二分查找为什么这道题值得弄懂?为什么可以用二分…

VLN通用评测管线设计

我来用图形化的方式清晰地展示整个多模型适配的架构和流程: 效果视图 #mermaid-svg-1UJ7Kg2nY4JE9Ncs {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-1UJ7Kg2nY4JE9Ncs .error-icon{fill:#552222;}#merm…

aiohttp模块如何使用

aiohttp 简介aiohttp 是一个基于 Python 的异步 HTTP 客户端/服务器框架,构建于 asyncio 之上。它支持高性能的异步网络操作,适用于 Web 服务、爬虫、API 调用等场景。核心功能HTTP 客户端:支持异步发送 HTTP 请求,处理响应。HTTP…

ModuleNotFoundError: No module named ‘dbgpt_app‘

问题原因:这个问题的核心是Python的模块导入机制。即使能看到dbgpt_app目录,但Python解释器可能找不到它,这是因为Python需要知道去哪里查找这个模块。让我用简单的语言解释一下: Python的模块搜索路径 Python解释器在导入模块时&…

死锁产生的条件是什么? 如何进行死锁诊断?

1. 死锁产生的条件是什么?一个线程需要同时获取多把锁,这时就容易发生死锁2. 如何进行死锁诊断?当程序出现了死锁现象,我们可以使用jdk自带的工具:jps和jstackjps:输出JVM中运行的进程状态信息jstack:查看java进程内线程的堆栈信息,查看日志,检查是否有死锁,如果有…