CakePHP Apc 缓存过于频繁地失效


CakePHP Apc cache being invalidated too frequently

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

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

有关实现的更多细节:

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

Cache::config('Config1', array(

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

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

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

我的目标 - 更新缓存中的一个特定列表,同时不触及其余缓存列表。这似乎是一项简单的任务,但我花了几个小时进行调查,但无法找出解决方案。

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

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