Zend Doctrine2 memcache vs PHP Memcache类

时间:2012-01-12 14:41:57

标签: php zend-framework memcached doctrine-orm

我正在尝试理解常规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实例吗?

我真的很欣赏这方面的一些想法,因为我对这应该如何联系在一起感到困惑。

1 个答案:

答案 0 :(得分:0)

完全可以使用Memcache Cache of Doctrine Common,这也是正确的方法,你也有一些抽象,允许你使用任何Doctrine\Common\Cache\Cache实例。我不太确定你是否会需要这样,因为你正在使用Zend Framework,你可能可以使用CacheManager或它关联的CacheManager resource,它们都会给你带来优势你的缓存机制是可配置的。