如何解决在 Symfony 4.4 中使用 RedisTagAwareAdapter
我在让 Symfony 与用于 redis 的标记感知适配器配合使用时遇到问题
对我来说不幸的是,Symfony 5.2 包含此功能,但因为我们没有切换到一个不可能的非 lts 版本。我试过检查配置,但对我来说不太适用。
这是我当前的设置:
# cache.yaml
framework:
cache:
prefix_seed: !php/const App\Kernel::APP_VERSION
app: cache.adapter.redis_tag_aware
redis.cache_app:
class: Redis
factory: ['Symfony\Component\Cache\Adapter\RedisAdapter','createConnection']
arguments:
- '%env(REDIS_DNS)%'
cache.adapter.redis_tag_aware:
class: Symfony\Component\Cache\Adapter\RedisTagAwareAdapter
arguments:
$redisClient: '@redis.cache_app'
$marshaller: '@?cache.default_marshaller'
calls:
- ['setLogger',['@?logger']]
tags:
- { name: cache.pool,provider: cache.default_redis_provider,clearer: cache.default_clearer,reset: reset }
- { name: monolog.logger,channel: cache }
但它尖叫着通过一些 CompilerPass 不存在参数 0。
应用缓存是不是不能作为标记缓存使用?我想我可以创建一个单独的池,也许可以使用它,但这似乎是一个奇怪的选择。
解决方法
好吧,显然这是一个配置问题。
以下将起作用
# services.yaml
redis.cache_app:
class: Redis
factory: ['Symfony\Component\Cache\Adapter\RedisAdapter','createConnection']
arguments:
- '%env(REDIS_DNS)%'
cache.app.redis_tag_aware:
class: Symfony\Component\Cache\Adapter\RedisTagAwareAdapter
arguments:
- '@redis.cache_app'
- ''
- 0
- '@?cache.default_marshaller'
calls:
- ['setLogger',['@?logger']]
tags:
- { name: cache.pool,provider: redis.cache_app,clearer: cache.default_clearer,reset: reset }
- { name: monolog.logger,channel: cache }
# cache.yaml
framework:
cache:
prefix_seed: !php/const App\Kernel::APP_VERSION
app: cache.app.redis_tag_aware
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。