/** * retrieve a simple key/value pair from memcache * * @param String $key * @param String_type $ns * @param String $bucket */ public static function retrieve($key, $ns = self::DEFAULT_NS, $bucket = self::DEFAULT_BUCKET) { $cache = MemcacheManager::getInstance()->cache; $cache->setBucket($bucket); $value = $cache->get($key); if ($value) { return $value; } }
/** * deletes object from memcache before deleting it from the db * * @author Matthias Pfefferle * @param Doctrine_Event $pEvent */ public function preDelete(Doctrine_Event $pEvent) { $lInvoker = $pEvent->getInvoker(); MemcacheManager::getInstance()->getCache()->remove($lInvoker->getMemcacheId()); }
/** * use our memcache instead database when calling method * * @author Matthias Pfefferle * @param int $pPk * @return array of user objects */ public function retrieveByPkTableProxy($pPk) { $lInvoker = $this->getInvoker(); $lClassName = get_class($lInvoker); $lObject = null; $lMemcacheId = strtolower($lClassName) . "-" . $pPk; // first try GLOBALS cache if (isset($GLOBALS['CACHE'][strtoupper($lClassName)][$pPk])) { $lObject = $GLOBALS['CACHE'][strtoupper($lClassName)][$pPk]; if ($lObject) { $cache = 'yiidGlobalCache'; } } else { // if not found try memcached $lObject = self::getFromMemcache($lMemcacheId); $cache = 'yiidMemcache'; } if ($lObject) { try { sfContext::getInstance()->getLogger()->info('{yiidGlobalCache} found a ' . $lClassName . ' with id ' . $pPk . ' in ' . $cache); } catch (Exception $e) { } // store in GLOBALS cache $GLOBALS['CACHE'][strtoupper($lClassName)][$pPk] = $lObject; return $lObject; } else { $lObject = $lInvoker->getTable()->find($pPk); if ($lObject) { MemcacheManager::getInstance()->getCache()->set($lMemcacheId, serialize($lObject)); $GLOBALS['CACHE'][strtoupper($lClassName)][$pPk] = $lObject; return $lObject; } else { return null; } } }