You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Symfony缓存以使用AWS Redis只读副本

解决Symfony中Redis主从集群只读副本未被利用的问题

不需要自定义缓存适配器,Symfony自带的Redis缓存适配器原生支持主从架构的读写分离配置,按以下步骤调整即可:

1. 更新环境变量配置

在.env文件中添加只读副本的入口点信息:

REDIS_HOST=xxx-redis.yyy.ng.0001.zone.cache.amazonaws.com
REDIS_PORT=6379
REDIS_REPLICA_HOST=xxx-redis-replica.yyy.ng.0001.zone.cache.amazonaws.com
REDIS_REPLICA_PORT=6379

2. 调整cache.yaml配置

方式一:针对特定缓存池配置

如果只需要让app缓存池使用主从架构,修改配置如下:

framework:
    cache:
        app: cache.adapter.redis
        pools:
            app.cache:
                adapter: cache.adapter.redis
                provider:
                    redis:
                        dsn: 'redis://%env(REDIS_HOST)%:%env(int:REDIS_PORT)%'
                        replica:
                            dsn: 'redis://%env(REDIS_REPLICA_HOST)%:%env(int:REDIS_REPLICA_PORT)%'

方式二:全局默认配置

如果你希望所有Redis缓存池都使用主从架构,调整default_redis_provider为数组格式:

framework:
    cache:
        app: cache.adapter.redis
        default_redis_provider:
            redis:
                dsn: 'redis://%env(REDIS_HOST)%:%env(int:REDIS_PORT)%'
                replica:
                    dsn: 'redis://%env(REDIS_REPLICA_HOST)%:%env(int:REDIS_REPLICA_PORT)%'

原理说明

配置完成后,Symfony的Redis适配器会自动路由请求:

  • 写操作(如set、delete、flush) 会发送到主节点
  • 读操作(如get、exists、keys) 会发送到只读副本

这样就能充分利用你的Redis集群资源,减轻主节点的读压力。

注意:确保你的Redis客户端(Predis或PhpRedis扩展)版本支持主从配置,建议使用最新稳定版。

内容的提问来源于stack exchange,提问作者Sergi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 12:23:21