我试图理解常规Memcache和Doctrine的MemcacheCache之间的区别。
在我的引导程序中,我实例化Memcache如下:
$memcache = new Memcache;
$memcache->connect('localhost', 11211);
'Zend_Registry::set("pdc_memcache_core", $memcache);
然后,我有下面的代码来实例化条令——这不是完整的代码,因为我只是在看仙人掌:
$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)) {
...
}
我并没有试图将Doctrine实体存储在Memcache中——我只是存储字符串和串行数组。
现在。。。这是使用带有条令的Memcache的正确方式吗?我可以看到,您使用setMemcache将Memcache实例分配给Doctrine的MemcacheCache。。。但是我会用MemcacheCache做我自己的东西吗?还是应该直接使用Memcache实例?
我真的很感激对此发表一些看法,因为我对这应该如何联系在一起感到困惑。
使用Doctrine Common的Memcache Cache是完全可以的,这也是正确的方式,而且您还有一些抽象,可以使用任何Doctrine'Common'Cache'Cache
实例。我不太确定您是否需要它,因为您正在使用Zend Framework,并且您可能可以使用CacheManager或其相关的CacheManager资源,这两者都将为您提供使缓存机制可配置的优势。