ts 新版的@nestjs/commo下redis的注册使用

一.我之前在@nestjs/commo 10以下时候注册redis时候,用在最新的"@nestjs/common": "^10.0.0",上面有问题,store添加上后,一直没能够注册成功,不加上我在redis工具上又没有查看到保存的数据,说明数据没有按照规定注册保存到想要的位置。

①添加依赖,我这里添加的依赖是符合"@nestjs/common": "^10.0.0",的,在我使用的时间下,安装的是最新的版本。

npm i @nestjs-modules/ioredis ioredis

创建redisManage模块

nest generate module redisManage

之后再创建service

nest genereate service redisManage

②在redis模块中注册redis

import { Module } from '@nestjs/common';
import { RedisModule } from '@nestjs-modules/ioredis';
import { RedisManageService } from './redis-manage.service';
@Module({
  imports: [
    RedisModule.forRoot({
      type: 'single',
      url:
        `//${process.env.REDIS_HOST}:${process.env.REDIS_PORT}` ||
        'redis://localhost:6379',
    }),
  ],
  providers: [RedisManageService],
  exports: [RedisManageService],
})
export class RedisManageModule {}

③在service中创建方法,可以给其他的模块方法使用

import { Injectable } from '@nestjs/common';
import Redis from 'ioredis';
import { InjectRedis } from '@nestjs-modules/ioredis';

@Injectable()
export class RedisManageService {
  constructor(@InjectRedis() private readonly redisCache: Redis) {}

  async get(key: string, isObject?: boolean) {
    type ResultType = string | object;
    const result: ResultType = await this.redisCache.get(key);
    if (isObject) {
      return JSON.parse(result);
    }
    return result;
  }

  // 如果自行定义过期时间,请使用该方法,并带第三个参数
  async set(key: string, value: string | number | object, ttl?: number) {
    const strValue = JSON.stringify(value);
    if (typeof value === 'object') {
      await this.redisCache.set(
        key,
        strValue,
        'EX',
        ttl ? ttl : 60 * 60 * 24 * 7,
      );
    } else {
      await this.redisCache.set(key, value, 'EX', ttl ? ttl : 60 * 60 * 24 * 7);
    }
  }

  async reset() {
    await this.redisCache.reset();
  }

  async del(key: string) {
    await this.redisCache.del(key);
  }
}

说明:这里的ttl时间为秒

60*60*24*7表示一周时间

这里创建处理之后,在使用redis添加数据之后,就可以通过redis工具查看到数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值