搜索

首页  >  问答  >  正文

Symfony Redis 无法连接到 env 文件中定义的主机,默认为 localhost

我们有一个新的 Symfony 设置,以 Redis 作为缓存机制。我们想要连接到特定主机,而不是默认的本地主机。在生产环境中,./bin/console debug:dotenv 给出了正确的 REDIS_HOST。这是在我们的 .env 和 .env.local.php 中配置的。

我们得到的错误是:

连接被拒绝:tcp:127.0.0.1/6379

这是我们的配置:

services.yml

services:
    Redis:
        # you can also use \RedisArray, \RedisCluster or \Predis\Client classes
        class: \Predis\Client
        calls:
            - connect:
                  - '%env(REDIS_HOST)%'
                  - '%env(int:REDIS_PORT)%'
    Symfony\Component\HttpFoundation\Session\Storage\Handler\RedisSessionHandler:
        arguments:
            - '@Redis'
            - prefix: sp_ss_
            - ttl: 1800

cache.yml

framework:
    cache:
        app: cache.adapter.redis
        default_redis_provider: 'Redis'
        pools:
            site.cache:
                adapter: cache.app

以及我们的 .env 文件:

APP_ENV=prod
APP_SECRET=****
MESSENGER_TRANSPORT_DSN=redis://redis.local:6379/messages
REDIS_HOST=redis.local
REDIS_PORT=6379
REDIS_URL=redis://redis.local:6379

P粉022501495P粉022501495260 天前577

全部回复(1)我来回复

  • P粉399090746

    P粉3990907462024-04-07 09:53:53

    Symfony 的文档建议使用“calls -> connect”,但仅当您将类定义为“Redis”时才使用它。当您使用'\Predis\Client'时,您需要使用以下设置:

    config/services.yaml

        Redis:
            # you can also use \RedisArray, \RedisCluster or \Predis\Client classes
            class: \Predis\Client
            # See all parameters here: https://github.com/predis/predis/wiki/Connection-Parameters#list-of-connection-parameters
            arguments:
                - host: '%env(REDIS_HOST)%'
                - port: '%env(int:REDIS_PORT)%'
                # uncomment the following if your Redis server requires a password
                # - password: '%env(REDIS_PASSWORD)%'
    

    我还使用“\Predis\Client”,更改为“arguments”后,连接在这里工作。

    有关更多参数参考,请查看此链接(连接参数列表).

    回复
    0
  • 取消回复