2013-02-25 48 views
2

我在使用教義2時沒有緩存任何內容。我想啓用內學說一些緩存系統,但它看起來像你必須手動管理處處是:學說 - 實體被修改時中斷查詢緩存(二級緩存)

$memcache = new Memcache(); 
$memcache->connect('memcache_host', 11211); 

$cacheDriver = new \Doctrine\Common\Cache\MemcacheCache(); 
$cacheDriver->setMemcache($memcache); 
$cacheDriver->save('cache_id', 'my_data'); 
... 
$cacheDriver->delete('cache_id'); 

我想知道,如果能學說自動管理這一點。例如:

  1. 緩存是啓用的,我通過ID請求User實體,在其高速緩存主義的搜索,找不到用戶,獲取它,將它設置到緩存中,將其返回。

  2. 我再次讀取,Doctrine返回緩存的User

  3. 我更新User(或其任何關係)學說進行檢測,並打破緩存此對象
  4. 我請求相同User通過ID,學說沒有它在緩存中了,把它拿來和設置緩存與更新的用戶返回之前

這可能嗎?

乾杯, 馬克西姆

回答

3

你在找什麼(在教義ORM)只支持在resultset cache,且僅適用於由DQL查詢產生的SQL查詢的結果。

您正在尋找的功能的確切名稱是"second-level cache",其尚未被學說ORM的支持,但目前正在制定(有望在2.5版本)在https://github.com/doctrine/doctrine2/pull/580

現在,你如果真的需要的話,你將不得不在你自己的服務層處理這種緩存。

+0

有趣的是,THX隊友做;) – maxwell2022 2013-02-26 03:54:39