NestJS CacheModule连接带密码的Redis存储失败如何解决?
原因说明
cache-manager-redis-store@2.x 版本不会直接读取根配置下的Redis认证参数,所有底层Redis客户端需要的配置必须嵌套在 redisOptions 字段中才会被正确传递。你之前的配置中,认证相关参数没有被传入Redis客户端,建立连接时未携带认证信息,因此触发认证失败报错。
解决方案
方案1:独立配置连接参数
import * as redisStore from 'cache-manager-redis-store'; // v2.0 @Module({ imports: [ CacheModule.register({ store: redisStore, host: 'localhost', port: 6379, redisOptions: { password: 'azerty' // 若Redis开启了ACL需要指定用户名,可在此处添加username字段 // username: 'default' } }), ], controllers: [], providers: [], })
方案2:使用连接字符串配置
CacheModule.register({ store: redisStore, redisOptions: { url: 'redis://:azerty@localhost:6379/0' } }),
后续如果升级到 cache-manager-redis-store@3.x 及以上版本,参数传递规则会发生变化,需要对应调整配置写法。
内容的提问来源于stack exchange,提问作者Nicolas Menettrier
相关产品推荐
相关产品推荐

