Nodejs Nestjs Redis缓存插件nestjs-redis-cache的使用

Nodejs Nestjs Redis缓存插件nestjs-redis-cache的使用
nestjs-redis-cache 是一个用于 NestJS 的 Redis 缓存插件,可以帮助你更方便地在 NestJS 应用中集成 Redis 作为缓存层。下面是如何使用 nestjs-redis-cache 的步骤:

安装依赖

首先,你需要安装 nestjs-redis-cacheioredis(或 redis)库。

npm install @nestjs-modules/redis-cache ioredis

或者如果你使用的是 yarn:

yarn add @nestjs-modules/redis-cache ioredis

配置 Redis 模块

接下来,在你的 NestJS 应用中配置 Redis 模块。你可以通过创建一个模块来完成这个配置。

import { Module } from '@nestjs/common';
import { RedisCacheModule } from '@nestjs-modules/redis-cache';

@Module({
  imports: [
    RedisCacheModule.register({
      store: require('ioredis'),
      host: 'localhost',
      port: 6379,
      password: 'your-password', // 如果需要的话
    }),
  ],
})
export class AppModule {}

使用缓存装饰器

现在,你可以在控制器和服务中使用缓存装饰器了。

控制器示例

import { Controller, Get, CacheInterceptor, CacheTTL } from '@nestjs/common';
import { AppService } from './app.service';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}

  @Get()
  @CacheTTL(60) // 设置缓存有效期为60秒
  getHello(): string {
    return this.appService.getHello();
  }
}

服务示例

如果你希望在服务级别应用缓存,可以使用 @UseInterceptors(CacheInterceptor) 装饰器。

import { Injectable, UseInterceptors, CacheInterceptor } from '@nestjs/common';

@Injectable()
@UseInterceptors(CacheInterceptor)
export class AppService {
  getHello(): string {
    return 'Hello World!';
  }
}

自定义缓存键

默认情况下,缓存键由方法名和参数生成。如果你想自定义缓存键,可以使用 @CacheKey 装饰器。

@Get(':id')
@CacheKey((id: string) => `user:${id}`)
getUser(@Param('id') id: string): User {
  // 获取用户逻辑
}

清除缓存

你可以通过调用 RedisCacheModule.redisCacheManager.clear() 方法来手动清除缓存。

import { RedisCacheModule } from '@nestjs-modules/redis-cache';

// 在某个地方注入 RedisCacheModule
constructor(private readonly redisCacheManager: RedisCacheModule.RedisCacheManager) {}

async clearCache() {
  await this.redisCacheManager.clear();
}

以上就是如何在 NestJS 中使用 nestjs-redis-cache 插件的基本步骤。通过这些配置,你可以轻松地将 Redis 集成到你的 NestJS 应用中,并利用其强大的缓存功能。


3 回复

当然,让我们一起踏上使用 nestjs-redis-cache 的奇妙旅程吧!首先,你需要确保你的项目中已经安装了 @nestjs/common, @nestjs/core, 以及 redisnestjs-redis-cache。接下来,就像变魔术一样,在你的模块文件中导入 RedisCacheModule

import { RedisCacheModule } from 'nestjs-redis-cache';

@Module({
  imports: [
    RedisCacheModule.register({
      // 这里可以配置你的Redis连接信息,比如host, port等
    }),
  ],
})
export class AppModule {}

现在,你可以开始在服务中注入 RedisCacheService 来使用缓存功能啦!想象一下,每次调用方法时,数据就像被施了魔法一样,瞬间从Redis中飞出来,是不是很酷?

@Injectable()
export class YourService {
  constructor(private readonly redisCacheService: RedisCacheService) {}

  @RedisCache('cacheKey')
  async fetchData() {
    // 你的数据获取逻辑
  }
}

就这样,你已经成功地让数据在你的应用中“飞”了起来!希望这段指引能让你的开发之旅充满乐趣!


nestjs-redis-cache 是一个用于 NestJS 应用程序的 Redis 缓存插件。它可以帮助你在应用中快速集成 Redis 缓存功能,提高数据读取速度。下面是如何使用这个插件的一些基本步骤和示例代码。

1. 安装依赖

首先,你需要安装 nestjs-redis-cache 和 Redis 的客户端库 ioredis(如果还没有安装的话):

npm install @nestjs-modules/redis-cache ioredis

2. 配置模块

在你的 NestJS 模块中配置 RedisCacheModule

import { Module } from '@nestjs/common';
import { RedisCacheModule } from '@nestjs-modules/redis-cache';

@Module({
  imports: [
    RedisCacheModule.register({
      // Redis 客户端配置
      client: {
        host: 'localhost',
        port: 6379,
      },
      ttl: 60, // 默认缓存过期时间(秒)
    }),
  ],
})
export class AppModule {}

3. 使用缓存装饰器

你可以使用 @Cache() 装饰器来标记需要缓存的方法:

import { Controller, Get, Cache } from '@nestjs/common';

@Controller('items')
export class ItemsController {
  @Get()
  @Cache() // 默认缓存时间为 register 方法中设置的 ttl 值
  async findAll(): Promise<any[]> {
    // 数据获取逻辑
    return [{ id: 1, name: 'Item 1' }];
  }
}

如果你想要为特定方法设置不同的缓存时间,可以在 @Cache() 装饰器中传入选项:

@Get()
@Cache({ ttl: 300 }) // 5 分钟
async findAll(): Promise<any[]> {
  // 数据获取逻辑
  return [{ id: 1, name: 'Item 1' }];
}

4. 清除缓存

你也可以通过调用服务提供的方法来手动清除缓存:

import { Injectable } from '@nestjs/common';
import { RedisCacheService } from '@nestjs-modules/redis-cache';

@Injectable()
export class ItemsService {
  constructor(private readonly redisCacheService: RedisCacheService) {}

  async clearCache() {
    await this.redisCacheService.clear();
  }
}

以上就是如何在 NestJS 中使用 nestjs-redis-cache 插件的基本步骤。希望这对你有所帮助!

nestjs-redis-cache 是一个用于 NestJS 的 Redis 缓存插件。首先,你需要安装这个插件:

npm install @nestjs-modules/redis-cache --save

然后在你的模块中配置并使用它:

import { Module } from '@nestjs/common';
import { RedisCacheModule } from '@nestjs-modules/redis-cache';

@Module({
  imports: [
    RedisCacheModule.register({
      host: 'localhost',
      port: 6379,
    }),
  ],
})
export class AppModule {}

接着,在服务中注入 RedisCacheService 来使用缓存功能:

import { Injectable } from '@nestjs/common';
import { RedisCacheService } from '@nestjs-modules/redis-cache';

@Injectable()
export class AppService {
  constructor(private readonly redisCacheService: RedisCacheService) {}

  @RedisCache() // 使用装饰器启用缓存
  getHello(): string {
    return 'Hello World!';
  }
}

这样,getHello() 方法的返回结果将被缓存。

回到顶部