在 Symfony 上设置 Redis 缓存前缀键

Vin*_*inZ 1 caching redis symfony

我正在使用 Redis 管理我的 Symfony 3.4 应用程序中的一些缓存,配置如下:

配置文件

framework:
    cache:
        default_redis_provider: 'redis://127.0.0.1:6379'
        pools:
            cache.catalog:
                adapter: cache.adapter.redis
                provider: iwid.custom_redis_provider
                default_lifetime: 86400
                public: true
            cache.language:
                adapter: cache.adapter.redis
                provider: iwid.custom_redis_provider
                default_lifetime: 86400
                public: true
Run Code Online (Sandbox Code Playgroud)

服务.yml

services:
    iwid.custom_redis_provider:
        class: Redis
        factory: ['Symfony\Component\Cache\Adapter\RedisAdapter', 'createConnection']
        arguments:
            - 'redis://127.0.0.1:6379'
            - { retry_interval: 0, timeout: 30 }
Run Code Online (Sandbox Code Playgroud)

现在,这在开发和生产环境中就像一个魅力一样,除了生产中的一件事:当我部署一个新版本时,我的部署系统会创建一个新文件夹并在其中创建git pull,然后将此文件夹作为当前 rootdir使用一个符号链接。

然后,当我部署任何版本时,我的 Redis 键的前缀会更改,因为我的应用程序的路径不同。然后,这显然会使任何以前缓存的键无效......这不是我想要的!

所以,我可以改变这一点,可能是通过一种“固定”缓存键(显然每个池一个)。

非常感谢任何帮助!

qde*_*ppe 5

是的,您必须设置一个固定键(正如他们在Symfony Doc 中所说的那样)。

例如,如果您想使用相同的 Redis 集群进行 staging 和 prod,您还可以将环境名称(dev、staging、prod... -SYMFONY_ENVAPP_ENV)与应用程序名称一起使用。

framework:
    cache:
        ...
        prefix_seed: '%kernel.environment%_myapp'
        ...
Run Code Online (Sandbox Code Playgroud)