2013-11-15 56 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');