当我将 Redis 设置为缓存存储时,如下所示:
import { Module, CacheModule } from '@nestjs/common';
import * as redisStore from 'cache-manager-redis-store';
@Module({
imports: [
CacheModule.register({
store: redisStore,
host: 'localhost',
port: 6379,
}),
],
controllers: [],
providers: [],
})
export class AppModule {}
它按预期工作。但是,如果由于某种原因与 Redis 的连接中断,整个应用程序将崩溃:
Error: Redis connection to localhost:6379 failed - connect ECONNREFUSED
127.0.0.1:6379
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1113:14)
我怎样才能优雅地处理这些错误,甚至尝试重新连接?
最佳答案
好的,我自己找到的。我需要在模块构造函数中注入(inject)公开的 CACHE_MANAGER
才能获得客户端:
import { CACHE_MANAGER, Inject } from '@nestjs/common';
...
export class AppModule {
constructor(@Inject(CACHE_MANAGER) cacheManager) {
const client = cacheManager.store.getClient();
client.on('error', (error) => {
console.info(error);
});
}
}
关于caching - 处理 Redis 缓存存储断开连接上的 Nest.js 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53172524/