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
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) .