在Nest js中,我添加了redis作为缓存管理器,调用set函数后,在Redis中找不到任何新增数据,那么,我是不是错过了什么?

ybzsozfc  于 2022-09-21  发布在  Redis
关注(0)|答案(1)|浏览(222)

节点版本:v14.15.4 Nest-js版本:9.0.0

Ts这里是代码。在应用程序模块中,我将Redis注册为缓存管理器。

  1. @Module({
  2. imports: [
  3. CacheModule.register({
  4. isGlobal: true,
  5. store: redisStore,
  6. url: process.env.REDIS_URL,
  7. })
  8. ],
  9. controllers: [AppController],
  10. providers: [AppService],
  11. })
  12. export class AppModule {}

服务.ts缓存数据方法用于存储带有键的数据。->问题是set函数没有保存任何内容

并获取按键返回数据的数据。

  1. @Injectable()
  2. export class SomeService {
  3. constructor(@Inject(CACHE_MANAGER) private cacheManager: Cache) {}
  4. async cacheData(key: string, data): Promise<void> {
  5. await this.cacheManager.set(key, data);
  6. }
  7. async getData(key: string, data): Promise<any> {
  8. return this.cacheManager.get(key);
  9. }
  10. }

它在运行时不会抛出任何错误。

11dmarpk

11dmarpk1#

我不确定为什么您的getData函数返回Promise<void>您是否尝试过返回Promise<any>或您期望的数据类型,例如Promise<string>。您也可以尝试添加await

  1. async getData(key: string, data): Promise<any> {
  2. return await this.cacheManager.get(key);
  3. }

您确定您正在成功连接到Redis吗?您是否尝试添加密码和TLS(真/假)配置?

  1. @Module({
  2. imports: [
  3. CacheModule.register({
  4. isGlobal: true,
  5. store: redisStore,
  6. url: process.env.REDIS_URL,
  7. password: process.env.REDIS_PASSWORD,
  8. tls: process.env.REDIS_TLS
  9. })
  10. ],
  11. controllers: [AppController],
  12. providers: [AppService],
  13. })
  14. export class AppModule {}
展开查看全部

相关问题