2013-11-15 49 views
1

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

列表数据也可以通过仪表板进行更新和保存。在我保存一个特定的列表之前,缓存很有效,此时所有缓存的数据都会失效。当我回到地图并加载一组列表时,这些列表不再被缓存。

关于实施一些更细节:

  • 我使用listing_ids双方的名单和个别列表数据我缓存配置:

缓存::配置(“配置Config1”,阵列(

  '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的组。上面的行与前面介绍的在仪表板中更新列表时使用的行相同。

我的目标 - 更新缓存中的一个特定列表,但未触及其他缓存列表。看起来像一个简单的任务,但我花了几个小时的调查,一直没能找出解决方案。

回答

1

刚刚改写特定的记录像你已经做

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