Symfony Redis 無法連線到 env 檔案中定義的主機,預設為 localhost
P粉022501495
P粉022501495 2024-04-06 10:53:02
0
1
444

我們有一個新的 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粉022501495
P粉022501495

全部回覆(1)
P粉399090746

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”後,連接在這裡工作。

有關更多參數參考,請查看此連結(連接參數清單).

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!