1

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

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

有关实施的更多细节:

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

缓存::config('Config1', array(

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

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

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

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

4

1 回答 1

1

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

Cache::write('Listing-'.$id, $listing, 'Config1');
于 2013-11-15T23:20:53.807 回答