我正在尝试理解常规Memcache和Doctrine的MemcacheCache之间的区别。
在我的bootstrap中,我像这样实例化Memcache:
$memcache = new Memcache;
$memcache->connect('localhost', 11211);
\Zend_Registry::set("pdc_memcache_core", $memcache);
然后我有以下代码来实例化Doctrine - 这不是完整的代码,因为我只是在看cachine:
$doctrineConfig = new \Doctrine\ORM\Configuration();
$memcacheCore = \Zend_Registry::get("pdc_memcache_core");
$cache = new \Doctrine\Common\Cache\MemcacheCache;
$cache->setMemcache($memcacheCore);
$cache->setNamespace("PDC_");
\Zend_Registry::set("pdc_memcache", $cache);
$doctrineConfig->setMetadataCacheImpl($cache);
$doctrineConfig->setQueryCacheImpl($cache);
然后我按照以下方式访问缓存:
if (\Zend_Registry::get("pdc_memcache")->contains($cacheKey)) {
...
}
我不是想在Memcache中存储Doctrine实体 - 我只是存储字符串和序列化数组。
现在......这是使用Memcache和Doctrine的正确方法吗?我可以看到你使用setMemcache将Memcache实例分配给Doctrine的MemcacheCache ......但是我会将MemcacheCache用于自己的东西吗?或者我应该直接使用Memcache实例吗?
我真的很欣赏这方面的一些想法,因为我对这应该如何联系在一起感到困惑。
答案 0 :(得分:0)
完全可以使用Memcache Cache of Doctrine Common,这也是正确的方法,你也有一些抽象,允许你使用任何Doctrine\Common\Cache\Cache
实例。我不太确定你是否会需要这样,因为你正在使用Zend Framework,你可能可以使用CacheManager或它关联的CacheManager resource,它们都会给你带来优势你的缓存机制是可配置的。