使用PHP的中央+本地缓存

时间:2017-06-29 08:39:09

标签: php memcached apc

我有一个多服务器设置,其中所有服务器运行相同的代码并需要共享相同的缓存。缓存数据量巨大,位于单独的memcached服务器中。

这确实有效,但memcached服务器很慢。缓慢意味着在最好的情况下需要大约0.3毫秒。这听起来很快但APC速度更快,而且我的经验更可靠。

构建一个本地只存储所需数据的缓存,首先从APC读取并回退到memcached是微不足道的。难题是删除密钥和清除缓存。我已经考虑过在每个节点中创建一个守护进程并向所有节点广播删除和清除命令,但这非常复杂。特别是因为CLI和FPM之间不共享APC。所以我的问题是这个问题已经解决了吗?

1 个答案:

答案 0 :(得分:0)

我们有类似的设置。但我们的情况更多是只读数据。但有时我们会在两级缓存中刷新数据。

我们有一个脚本可以在2级缓存@中刷新一次选定的密钥。我们删除了memcache中的密钥,然后删除了集群的所有apc缓存(通过写入方法)。由于我们的案例更多是缓存只读数据 - 它运行良好。

可能你想试​​试这个!

flush有2个组成部分:

  1. 在memcache中执行删除(memcache delete api call)
  2. 用于从APC缓存中删除给定密钥的php组件。
  3. 由于php组件存在于我们服务器集群的所有节点中,因此我们知道任何给定实例的服务器列表。我们触发一组APC删除组件的curl调用。