Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.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
CakePHP Apc缓存频繁失效_Php_Cakephp_Caching_Cakephp 2.0_Apc - Fatal编程技术网

CakePHP Apc缓存频繁失效

CakePHP Apc缓存频繁失效,php,cakephp,caching,cakephp-2.0,apc,Php,Cakephp,Caching,Cakephp 2.0,Apc,我目前正在CakePHP应用程序中使用Apc缓存。我有数千个列表,我想缓存为单独的对象,可以独立读取、更新和覆盖。然后,我分别缓存列表ID的组。有一些昂贵的基于位置的计算用于计算应加载的列表ID的分组(这是一个maps应用程序),因此需要缓存此列表ID 列表数据也可以通过仪表板更新和保存。在我保存一个特定的列表之前,缓存工作得非常好,此时所有缓存的数据都将失效。当我返回地图并加载一组列表时,这些列表不再被缓存 有关实施的更多细节: 我对清单ID列表和单个清单数据使用的缓存配置: 缓存::配置

我目前正在CakePHP应用程序中使用Apc缓存。我有数千个列表,我想缓存为单独的对象,可以独立读取、更新和覆盖。然后,我分别缓存列表ID的组。有一些昂贵的基于位置的计算用于计算应加载的列表ID的分组(这是一个maps应用程序),因此需要缓存此列表ID

列表数据也可以通过仪表板更新和保存。在我保存一个特定的列表之前,缓存工作得非常好,此时所有缓存的数据都将失效。当我返回地图并加载一组列表时,这些列表不再被缓存

有关实施的更多细节:

  • 我对清单ID列表和单个清单数据使用的缓存配置:
缓存::配置('Config1',数组(

  • 要在加载映射时初始化各个清单缓存,我只需迭代从数据库返回的清单,缓存每个清单,并在末尾附加清单id,如下所示:

    Cache::write('Listing-'.$id,$Listing,'Config1')

  • 我已经能够确保正确保存列表ID组。上面的行与前面描述的在仪表板中更新列表时使用的行相同


我的目标-更新缓存中的一个特定列表,同时不接触其余的缓存列表。这似乎是一项简单的任务,但我已经花了几个小时研究,还没有找到解决方案。

只需像您已经做的那样重写特定记录

Cache::write('Listing-'.$id, $listing, 'Config1');

就像你已经在做的那样重写特定的记录

Cache::write('Listing-'.$id, $listing, 'Config1');