caching - 处理 Redis 缓存存储断开连接上的 Nest.js 应用程序

标签 caching redis nestjs

当我将 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/

相关文章:

nestjs - SpyOn TypeORM 存储库更改单元测试 NestJS 的返回值

jestjs - NestJS/TypeORM 单元测试 : Can't resolve dependencies of JwtService

用于存储关注者/关注用户的 MySQL 与 Redis

nestjs - NestJs+TypeOrm中如何调用存储过程(后端)

.net - EntLib 缓存应用程序 block 的替代方案?

asp.net - AppFabric 本地缓存性能

java - Redis key 命令未显示所有 key

java - Redisson客户端setnx

node.js - meteor 用于非常快的数据

django - 在Docker容器中上下移动docker-compose之间保持Redis数据事件