2013-02-25 74 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