Nodejs Nestjs缓存插件nestjs-memcached的使用

Nodejs Nestjs缓存插件nestjs-memcached的使用
nestjs-memcached 是一个用于 NestJS 的 Memcached 缓存插件。下面是一个简单的使用示例:

  1. 首先安装所需的依赖包:
npm install @nestjs/common @nestjs/core memcached-client
npm install --save @nestjs-modules/memcached
  1. 创建一个模块,并在其中配置 MemcachedModule
import { Module } from '@nestjs/common';
import { MemcachedModule } from '@nestjs-modules/memcached';

@Module({
  imports: [
    MemcachedModule.register({
      servers: ['localhost:11211'],
      options: {
        retries: 3,
        retry: 5000,
        timeout: 5000,
      },
    }),
  ],
})
export class AppModule {}
  1. 在服务中注入 MemcachedService 并使用它:
import { Injectable, Inject } from '@nestjs/common';
import { MemcachedService } from '@nestjs-modules/memcached';

@Injectable()
export class CacheService {
  constructor(
    @Inject(MemcachedService) private readonly memcachedService: MemcachedService,
  ) {}

  async get(key: string): Promise<string | null> {
    return await this.memcachedService.get(key);
  }

  async set(key: string, value: string, ttl?: number): Promise<void> {
    return await this.memcachedService.set(key, value, ttl);
  }
}
  1. 使用 CacheService
import { Controller, Get, Param } from '@nestjs/common';
import { CacheService } from './cache.service';

@Controller('users')
export class UserController {
  constructor(private readonly cacheService: CacheService) {}

  @Get(':id')
  async getUser(@Param('id') id: string) {
    const user = await this.cacheService.get(id);
    if (user) {
      return JSON.parse(user);
    }
    // 假设你有一个函数可以获取用户数据
    const userData = await this.getUserDataFromDatabase(id);
    await this.cacheService.set(id, JSON.stringify(userData), 60 * 60); // 缓存一小时
    return userData;
  }

  private async getUserDataFromDatabase(id: string) {
    // 这里实现从数据库获取用户数据的逻辑
  }
}

以上代码展示了如何在 NestJS 应用程序中使用 nestjs-memcached 插件来实现基本的缓存功能。你可以根据实际需求调整配置和逻辑。

注意:确保你的 Memcached 服务器正在运行,并且可以通过指定的地址访问。


3 回复

当然,小伙伴!使用nestjs-memcached插件来给你的NestJS应用添加缓存功能就像是给你的披萨加点芝士——简单又美味!

首先,你需要安装nestjs-memcached。打开你的终端,输入:

npm install nestjs-memcached memcached

接着,在你的模块文件中导入MemcachedModule。假设你有一个AppModule,你可以这样配置:

import { Module } from '@nestjs/common';
import { MemcachedModule } from 'nestjs-memcached';

@Module({
  imports: [
    MemcachedModule.forRoot({
      hosts: ['127.0.0.1:11211'], // 你的Memcached服务器地址
      options: {
        retries: 3, // 重试次数
        timeout: 1000, // 超时时间(毫秒)
      },
    }),
  ],
})
export class AppModule {}

然后,你可以在服务中注入MemcachedService来使用它:

import { Injectable } from '@nestjs/common';
import { MemcachedService } from 'nestjs-memcached';

@Injectable()
export class DataService {
  constructor(private readonly memcachedService: MemcachedService) {}

  async getData(key: string) {
    const data = await this.memcachedService.get(key);
    return data || "数据未找到";
  }

  async saveData(key: string, value: any) {
    await this.memcachedService.set(key, value, 60 * 60); // 设置缓存过期时间为1小时
  }
}

现在,你可以愉快地享用带有缓存的高效数据访问了!


nestjs-memcached 是一个用于 NestJS 的 Memcached 缓存插件。以下是如何使用它的基本步骤和示例代码。

安装

首先,你需要安装 nestjs-memcachedmemcached

npm install nestjs-memcached memcached

配置

接下来,在你的应用模块中配置 MemcachedModule。以下是一个示例:

import { Module } from '@nestjs/common';
import { MemcachedModule } from 'nestjs-memcached';

@Module({
  imports: [
    MemcachedModule.register({
      hosts: ['127.0.0.1:11211'], // Memcached 服务器地址
      options: {
        retries: 3, // 重试次数
        retry: 5000, // 重试间隔(毫秒)
        timeout: 5000, // 超时时间(毫秒)
      },
    }),
  ],
})
export class AppModule {}

使用缓存

在你的服务中注入 MemcachedService 来使用缓存功能。以下是一个示例:

import { Injectable } from '@nestjs/common';
import { MemcachedService } from 'nestjs-memcached';

@Injectable()
export class CacheService {
  constructor(private readonly memcachedService: MemcachedService) {}

  async set(key: string, value: any) {
    return this.memcachedService.set(key, value);
  }

  async get(key: string) {
    return this.memcachedService.get(key);
  }

  async del(key: string) {
    return this.memcachedService.del(key);
  }
}

示例用法

以下是如何在控制器中使用上述 CacheService

import { Controller, Get, Param } from '@nestjs/common';
import { CacheService } from './cache.service';

@Controller('items')
export class ItemsController {
  constructor(private readonly cacheService: CacheService) {}

  @Get(':id')
  async getItem(@Param('id') id: string) {
    const item = await this.cacheService.get(id);
    if (!item) {
      // 假设这是一个从数据库获取数据的方法
      const item = await this.fetchItemFromDatabase(id);
      await this.cacheService.set(id, item);
      return item;
    }
    return item;
  }

  private async fetchItemFromDatabase(id: string) {
    // 模拟从数据库获取数据
    return { id, name: 'Sample Item' };
  }
}

在这个例子中,我们首先尝试从缓存中获取项目。如果没有找到,则从数据库中获取,并将结果存储到缓存中。这样可以减少对数据库的直接访问次数,提高性能。

nestjs-memcached 是一个用于NestJS的Memcached缓存插件。首先安装该插件:

npm install nestjs-memcached memcached

然后在你的模块中引入 MemcachedModule

import { Module } from '@nestjs/common';
import { MemcachedModule } from 'nestjs-memcached';

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

之后可以在服务中注入 MemcachedService 来进行缓存操作:

import { Injectable } from '@nestjs/common';
import { MemcachedService } from 'nestjs-memcached';

@Injectable()
export class AppService {
  constructor(private readonly memcachedService: MemcachedService) {}

  async getFromCache(key: string): Promise<any> {
    return this.memcachedService.get(key);
  }

  async setToCache(key: string, value: any, ttl?: number): Promise<void> {
    await this.memcachedService.set(key, value, ttl);
  }
}

这提供了基本的缓存功能,如获取和设置值。

回到顶部