CakePHP Apc缓存过于频繁地失效

时间:2013-11-15 04:12:29

标签: php cakephp caching cakephp-2.0 apc

我目前正在使用CakePHP应用程序中的Apc缓存。我有成千上万的列表要作为单独的对象缓存,可以单独读取,更新和覆盖。然后我分别缓存listing_ids组。有一些昂贵的基于位置的计算用于计算应加载的listing_ids的分组(它是一个地图应用程序),因此需要缓存list_ids的列表。

列表数据也可以通过仪表板更新和保存。缓存很有效,直到我保存特定列表,此时所有缓存数据都无效。当我返回地图并加载一组列表时,这些列表不再被缓存。

有关实施的更多细节:

  • 我的缓存配置我正用于listing_ids列表和各个列表数据:

Cache :: config('Config1',array(

            'engine' => 'Apc', 
            'duration'=> 10000000, 
            'probability'=> 100, 
            'path' => CACHE, 
            'prefix' => 'cake_', 
            'lock' => false, 
            'serialize' => true, 
            'mask' => 0666,
    ));
  • 要在加载地图时初始化单个列表缓存,我只需遍历从数据库返回的列表,缓存每个列表并将其list_id附加到末尾,如下所示:

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

  • 我已经能够确保正确保存listing_ids组。上述行与更新仪表板中的列表时使用的相同,如前所述。

我的目标 - 更新缓存中的一个特定列表,同时不触及其余的缓存列表。看似简单的任务,但我花了几个小时进行调查,但却未能找到解决方案。

1 个答案:

答案 0 :(得分:1)

只需重写您已经在做的特定记录

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