gpt4 book ai didi

heroku - 如何为 NestJS 缓存管理器传递 REDIS_URI?

转载 作者:行者123 更新时间:2023-12-04 07:47:58 25 4
gpt4 key购买 nike

在官方文档中,这是将缓存管理器与 Redis 一起使用的正确方法:

import * as redisStore from 'cache-manager-redis-store';
import { CacheModule, Module } from '@nestjs/common';
import { AppController } from './app.controller';

@Module({
imports: [
CacheModule.register({
store: redisStore,
host: 'localhost',
port: 6379,
}),
],
controllers: [AppController],
})
export class AppModule {}
来源: https://docs.nestjs.com/techniques/caching#different-stores
但是,我没有找到任何关于如何使用 REDIS_URI 传递 Redis 实例数据的文档。我需要将它与 Heroku 一起使用,我相信这是一个常见的用例。

最佳答案

编辑:
现在它们是类型安全的:https://github.com/nestjs/nest/pull/8592

我已经探索了一些关于如何实例化 redis 客户端的信息。由于this line我认为您传递给 CacheModule.register 的选项将转发至 Redis#createClient (来自 redis 包)。因此,您可以像这样传递 URI:

CacheModule.register({
store: redisStore,
url: 'redis://localhost:6379'
})
试试这个,让我知道它是否有效。

编辑:
解释我是如何得到的:
{ store: redisStore, url: '...' }options .
  • Here in CacheModule.register 我发现你的 options将住在CACHE_MODULE_OPTIONS token (作为 Nest 提供者)
  • 然后我搜索将使用此 token 的地方。然后我找到了here那些options已传递给 cacheManager.caching .在哪里 cacheManager is the module cache-manager
  • 调查 cacheManager.caching的代码 here ,你会看到你的 options现在是他们的args参数
  • 由于options.store ( redisStore ) 是由 cache-manager-redis-store 导出的模块包, args.store.create 方法与 redisStore.create 中的功能相同
  • 因此args.store.create(args)和做 redisStore.create(options) 一样最后会调用 Redis.createClient passing this options
  • 关于heroku - 如何为 NestJS 缓存管理器传递 REDIS_URI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67118563/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com