在 Nest.js 中操作 Redis

1,216 阅读2分钟

在 Nest.js 中操作 Redis

Redis 是一个流行的内存数据库,它被广泛用于缓存、消息队列、会话存储等场景。在 Nest.js 中,我们可以使用 nestjs-redis 这个扩展来快速集成 Redis,并使用 Redis 服务。

安装 Redis 扩展

在开始之前,我们首先需要安装 Redis 扩展。在项目根目录下执行以下命令:

npm install --save nestjs-redis redis

其中 redis 是 Redis 的 Node.js 客户端库。

注册 Redis 模块

在 Nest.js 中,我们需要使用 RedisModule.forRoot() 方法来注册 Redis 模块。下面是一个示例,展示如何在 Nest.js 中注册 Redis 模块:

import { Module } from '@nestjs/common';
import { RedisModule } from 'nestjs-redis';

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

在上述示例中,我们在 AppModule 中注册了 Redis 模块,并使用 RedisModule.forRoot() 方法传递 Redis 的主机和端口号。

使用 Redis

在 Nest.js 中,我们可以使用 @InjectRedis() 装饰器在其他服务或者控制器中注入 Redis 服务。下面是一个示例,展示如何在 Nest.js 中使用 Redis:

import { Injectable } from '@nestjs/common';
import { InjectRedis, Redis } from 'nestjs-redis';

@Injectable()
export class CacheService {
  constructor(@InjectRedis() private readonly redis: Redis) {}

  async get(key: string): Promise<any> {
    const value = await this.redis.get(key);
    return value ? JSON.parse(value) : null;
  }

  async set(key: string, value: any, ttl?: number): Promise<void> {
    await this.redis.set(key, JSON.stringify(value), 'EX', ttl || 3600);
  }
}

在上述示例中,我们在 CacheService 中注入了 Redis 服务,并使用 get() 方法来获取缓存数据,使用 set() 方法来设置缓存数据。在 set() 方法中,我们还使用了 EX 参数来指定过期时间。

总结

在 Nest.js 中,Redis 是一个流行的内存数据库,它可以帮助我们实现缓存、消息队列、会话存储等功能。在这篇文章中,我们学习了如何在 Nest.js 中集成和使用 Redis,以及如何注册 Redis 模块和使用 Redis 服务。通过使用 Redis,我们可以轻松地实现高性能、高可靠的应用程序。