【发布时间】:2021-02-25 07:06:39
【问题描述】:
我的 symfony 应用程序有多个实例在单独的 docker 容器中运行。
我已经将我的app.cache 配置为使用redis:
framework:
cache:
app: cache.adapter.redis
我有同样的prefix_seed:
framework:
cache:
prefix_seed: 'dev'
结果我在 redis 中得到了这样的结果:
1605259288.470950 [0 172.18.0.28:55044] "MGET" "HnMEIyUlZ+:workers.restart_requested_timestamp"
1605259288.471680 [0 172.18.0.28:55044] "SET" "HnMEIyUlZ+:workers.restart_requested_timestamp" "d:1605259288.471522;"
1605259314.483389 [0 172.18.0.29:42884] "MGET" "8TMgMtnOAG:workers.restart_requested_timestamp"
从上面可以看出,2 个不同的实例试图通过相同的键 workers.restart_requested_timestamp 从 redis 中获取值,但即使使用相同的 prefix_seed,前缀也不同。
在这个例子中,我使用了 messenger 组件,我想通过stop-workers 命令(通过共享的 redis)阻止工作人员到处运行。但一般来说这和缓存配置有关。
如何克服这个问题并告诉两个应用程序使用同一个池?这是什么配置?
【问题讨论】:
-
@yivi 我发现它不会按预期工作
-
检查this。它可能会帮助你。
-
这能回答你的问题吗? Set Redis cache prefix key on Symfony
标签: php symfony symfony4 symfony-messenger symfony-cache