Maison  >  Questions et réponses  >  le corps du texte

Symfony Redis ne peut pas se connecter à l'hôte défini dans le fichier env, qui est par défaut localhost

Nous avons une nouvelle configuration Symfony avec Redis comme mécanisme de mise en cache. Nous voulons nous connecter à un hôte spécifique, pas à l'hôte local par défaut. En production, ./bin/console debug:dotenv donne le REDIS_HOST correct. Ceci est configuré dans nos .env et .env.local.php.

L'erreur que nous obtenons est :

Connexion refusée : tcp:127.0.0.1/6379

Voici notre configuration :

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

Et notre fichier .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粉022501495169 Il y a quelques jours359

répondre à tous(1)je répondrai

  • P粉399090746

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

    La documentation de Symfony recommande d'utiliser "calls -> connect", mais ne l'utilisez que si vous définissez votre classe comme "Redis". Lorsque vous utilisez 'PredisClient', vous devez utiliser les paramètres suivants :

    "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)%'
    

    J'ai également utilisé "PredisClient" et après avoir changé en "arguments", la connexion a fonctionné ici.

    Pour plus de références sur les paramètres, veuillez consulter ce lien (Liste des paramètres de connexion) .

    répondre
    0
  • Annulerrépondre