@lark-apaas/cache-service
v0.1.1
Published
FullStack cache SDK, NestJS today, Express-ready tomorrow
Downloads
2,005
Readme
@lark-apaas/cache-service
FullStack 应用运行时缓存 SDK。当前提供 NestJS 装配层,core/ 层框架无关,未来可无缝接入 Express。
使用
PlatformModule 已默认挂载 NestjsCacheModule,业务代码直接注入 CACHE_MANAGER 即可:
import { Inject, Injectable } from '@nestjs/common';
import { CACHE_MANAGER } from '@nestjs/cache-manager';
import type { Cache } from 'cache-manager';
@Injectable()
export class MyService {
constructor(@Inject(CACHE_MANAGER) private readonly cache: Cache) {}
async getUser(id: string) {
return this.cache.wrap(`user:${id}`, () => this.fetchUser(id), 60_000);
}
}Trace 事件
SDK 通过 @lark-apaas/nestjs-observable 上报四类事件:
| 事件 | 字段 |
|---|---|
| cache.read | cache_key / result(hit | miss) / duration_ms |
| cache.write | cache_key / duration_ms |
| cache.delete | cache_key / duration_ms |
| cache.error | error_code / message |
环境变量
| 变量 | 说明 |
|---|---|
| MIAODA_CACHE_URL | Redis 协议连接串,由 PlatformModule 装配层读取传入 |
手动装配(非 PlatformModule 场景)
import { NestjsCacheModule } from '@lark-apaas/cache-service/nestjs';
@Module({
imports: [
NestjsCacheModule.forRootAsync({
imports: [LoggerModule],
inject: [AppLogger],
useFactory: () => ({
connectionString: process.env.MIAODA_CACHE_URL!,
connectionTokenFilePath: '/var/run/secrets/zti/credential',
}),
}),
],
})
export class AppModule {}