2012-01-12 2 views
0

Я пытаюсь понять разницу между регулярным Memcache и MemcacheCache Doctrine.Zend Doctrine2 memcache vs PHP Memcache class

В моем загрузчике я создаю экземпляр Memcache, как это:

$memcache = new Memcache; 
    $memcache->connect('localhost', 11211); 
    \Zend_Registry::set("pdc_memcache_core", $memcache); 

Я тогда следующий код для инстанцирования Учения - это не полный код, как я просто смотрю на 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)) { 
     ... 
    } 

Я не пытаюсь хранить объекты Doctrine в Memcache - я просто храню строки и сериализованные массивы.

Теперь ... это правильный способ использования Memcache с Doctrine? Я вижу, что вы используете setMemcache для назначения экземпляра Memcache для MemcacheCache Doctrine ... но я бы использовал MemcacheCache для своих собственных вещей? Или я должен использовать экземпляр Memcache напрямую?

Было бы очень полезно поразмышлять над этим, так как я смущен тем, как это должно соединяться вместе.

ответ

0

Совершенно нормально использовать Memcache Cache of Doctrine Common, это также правильный способ, и у вас также есть абстракция, которая позволяет вам использовать любой экземпляр Doctrine\Common\Cache\Cache. Я не совсем уверен, что вам это понадобится, поскольку вы работаете с Zend Framework, и вы, вероятно, можете использовать CacheManager или связанный с ним CacheManager resource, что даст вам преимущество, чтобы настроить ваш механизм кеширования.

Смежные вопросы