Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
中环+;用PHP实现本地缓存_Php_Memcached_Apc - Fatal编程技术网

中环+;用PHP实现本地缓存

中环+;用PHP实现本地缓存,php,memcached,apc,Php,Memcached,Apc,我有一个多服务器设置,所有服务器运行相同的代码,需要共享相同的缓存。缓存的数据量巨大,并且位于单独的memcached服务器中 这确实有效,但memcached服务器速度较慢。慢意味着在最佳情况下大约需要0.3毫秒。这听起来很快,但APC要快得多,而且根据我的经验更可靠 构建一个只在本地存储所需数据、首先从APC读取数据并回退到memcached的缓存是很简单的。困难的问题是删除密钥并清除缓存。我曾考虑在每个节点中创建一个守护进程,并向所有节点广播delete和clear命令,但这会变得非常复杂

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

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


构建一个只在本地存储所需数据、首先从APC读取数据并回退到memcached的缓存是很简单的。困难的问题是删除密钥并清除缓存。我曾考虑在每个节点中创建一个守护进程,并向所有节点广播delete和clear命令,但这会变得非常复杂,而且速度非常快。尤其是由于CLI和FPM之间不共享APC。所以我的问题是这个问题已经解决了吗?

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

我们有一个脚本,可以一次性刷新两级缓存中的选定密钥。我们删除了memcache中的密钥,然后删除了集群中所有apc缓存中的密钥(直写方法)。因为我们的案例更多的是缓存只读数据,所以它工作得很好

也许你想试试这个

冲洗有两个组件:

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

    一般来说,是的。你能分享一下冲洗的技术细节吗?它是手动完成的还是有脚本?如果有,它看起来像什么?您将如何运行脚本?如何将脚本扩展到X台服务器?