【发布时间】:2021-01-30 15:50:47
【问题描述】:
symfony 应用程序当前连接到 docker 容器中的 redis 缓存。我在 Azure 上创建了一个新的 Redis 缓存,我正在尝试将它连接到我的 symfony 应用程序,该应用程序在另一个 docker 容器中运行。根据symfony,redis://[pass@][ip|host|socket[:port]][/db-index] 是.env 文件中存在的连接字符串的格式。在我的情况下是:
REDIS_URL=redis://mypassword@myrediscache.redis.cache.windows.net:6380
应用程序无法连接到 Azure 上的 redis 服务器。应用程序使用predis v1.1.1有一个Cacheservice.php服务正在创建predis客户端。
$this->client = new Predis\Client($this->containerInterface->getParameter('REDIS_URL'));
对于现有的(容器中的 redis)设置,它工作正常。
REDIS_URL = redis://redis:6379
但是当我将其更改为REDIS_URL=redis://mypassword@myrediscache.redis.cache.windows.net:6379 时,应用程序无法连接。但是,如果我在创建 predis 客户端的服务中硬编码连接值,则应用程序能够连接。
下面的 sn-p 是硬编码连接到端口 6380(启用 SSL)
$this->client = new Predis\Client([
'scheme' => 'tls',
'ssl' => ['verify_peer' => true],
'host' => 'myrediscache.redis.cache.windows.net',
'port' => 6380,
'password' => 'mypassword'
]);
下面的 sn-p 是硬编码连接到端口 6379(非 SSL)
$this->client = new Predis\Client([
'host' => 'myrediscache.redis.cache.windows.net',
'port' => 6380,
'password' => 'mypassword'
]);
请帮助我将这些值放入.env 文件中,而不是对其进行硬编码。顺便说一下,这里还有一些引用redis的地方。
snc_redis.yaml文件:
snc_redis:
clients:
default:
type: predis
alias: default
dsn: "%env(REDIS_URL)%"
services.yaml文件:
parameters:
REDIS_URL: '%env(resolve:REDIS_URL)%'
我已经为 Azure redis 缓存启用了 6379 端口
【问题讨论】:
标签: php symfony symfony4 azure-redis-cache predis