首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在RedisAdapter中覆盖要缓存的Symfony4应用程序的命名空间参数

如何在RedisAdapter中覆盖要缓存的Symfony4应用程序的命名空间参数
EN

Stack Overflow用户
提问于 2020-01-02 12:51:40
回答 2查看 1.4K关注 0票数 0

我希望在RedisAdapter中使用自定义名称空间来缓存Symfony4应用程序。但是,当我想在我们的services.yaml中设置这样的参数时;

代码语言:javascript
复制
cache.adapter.redis:
        class: Symfony\Component\Cache\Adapter\RedisAdapter
        arguments:
            - '@Redis'
            - 'app'

我看到了这个错误消息:

Symfony\Component\Cache\Traits\RedisTrait::init() expects parameter 1 to be Redis, RedisArray, RedisCluster or Predis\ClientInterface, string given.

顺便说一下,我们的缓存配置(config/packages/cache.yaml)很简单,如下所示。那么,如何从任何配置直接设置命名空间呢?

代码语言:javascript
复制
    cache:
        app: cache.adapter.redis
        default_redis_provider: 'redis://%env(REDIS_HOST)%:%env(REDIS_PORT)%'
EN

回答 2

Stack Overflow用户

发布于 2020-01-03 07:26:47

我用这个配置解决了这个问题:

代码语言:javascript
复制
app.cache.adapter.redis:
    parent: 'cache.adapter.redis'
    public: true
    autowire: true
    autoconfigure: false
    tags:
        - {name: 'cache.pool', namespace: 'app'}
票数 2
EN

Stack Overflow用户

发布于 2020-07-23 17:17:33

如果需要命名空间与第三方应用程序进行互操作,则可以通过设置namespace服务标记的cache.pool属性来控制自动生成。例如,可以重写适配器的服务定义:

代码语言:javascript
复制
# config/services.yaml
services:
    app.cache.adapter.redis:
        parent: 'cache.adapter.redis'
        tags:
            - { name: 'cache.pool', namespace: 'my_custom_namespace' }

这里有更多详细信息:https://github.com/symfony/symfony-docs/pull/12527

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59563682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档