Maison > Article > développement back-end > PHP appelle un exemple de technologie de mise en cache MEMCACHE
Dans les projets, lorsqu'un trafic important est impliqué, une utilisation raisonnable du cache peut réduire la pression sur la base de données et améliorer l'expérience utilisateur. Autrement dit, sous l'hypothèse d'exigences non en temps réel, dans un court laps de temps (plusieurs secondes), les données utilisées pour l'affichage sont obtenues à partir du cache sans lire directement la base de données, ce qui peut réduire efficacement la pression de lecture du base de données. Voici un compte rendu de l'utilisation de memcache en langage PHP :
Tout d'abord, nous créons un memcachepool, qui peut être lu selon différentes configurations et générer différentes instances de memcache. Utilisez $memcache->addServer($host,$port,$flag); pour ajouter un serveur Memcache au pool de connexions. L'exemple de code est le suivant :
class memcachePool{ private static $instance; private $memcacheList = array(); private function __construct(){ } public static function getInstance(){ if(self::$instance != null) return self::$instance; self::$instance = new memcachePool(); return self::$instance; } /** * get memcache object from pool * @param [type] $host 服务器 * @param [type] $port 端口 * @param [type] $flag 控制是否使用持久化连接。默认TRUE * @return [type] */ public function getMemcache($host,$port,$flag){ if(isset($this->memcacheList[$host.$port])) return $this->memcacheList[$host.$port]; $memcache = new Memcache(); // 向连接池中添加一个memcache服务器 $memcache->addServer($host,$port,$flag); //开启大值自动压缩,第一个参数表示处理数据大小的临界点,第二个参数表示压缩的比例,默认为0.2 $memcache->setCompressThreshold(2000,0.2); $this->memcacheList[$host.$port] = $memcache; return $memcache; } }
Implémentez ensuite une classe de méthodes qui contient les méthodes memcache courantes telles que add, set, get, flush, delete, etc. Ici, elle est nommée dlufmemcache
class dlufMemcache{ private $memcache = null; function __construct($host,$port){ $this->memcache = memcachepool::getInstance()->getMemcache($host,$port,true); } /** * memcache set value * @param [type] $key 键 * @param [type] $value 值 * @param integer $expire 到期的时间,如果此值设置为0表明此数据永不过期 * @param integer $flag 标志位 使用MEMCACHE_COMPRESSED指定对值进行压缩(使用zlib) * @param [type] $serializetype */ public function set($key,$value,$expire=0,$flag=0,$serializetype=null){ if($serializetype == 'json' && is_array($value)){ $value = json_encode($value); } $this->memcache->set($key,$value,$flag,$expire); } /** * 从服务端查找元素 * @param [type] $key * @return [type] */ public function get($key){ return $this->memcache->get($key); } /** * 增加一个条目到缓存服务器 * @param [type] $key * @param [type] $value * @param integer $expire * @param integer $flag * @param [type] $serializetype */ public function add($key,$value,$expire=0,$flag=0,$serializetype=null){ if($serializetype == 'json' && is_array($value)){ $value = json_encode($value); } $ret = $this->memcache->add($key,$value,$flag,$expire); return $ret; } /** * 清洗(删除)已经存储的所有的元素 * @return [type] */ public function flush(){ return $this->memcache->flush(); } /** * 从服务端删除一个元素 * @param [type] delete 参数:key要删除的元素的key 删除该元素的执行时间 timeout如果值为0,则该元素立即删除。 * @return [type] */ public function delete($key){ $ret = $this->memcache->delete($key,0); return $ret; } }
puis appelez dlufmemcache :
1 $memcache = new dlufMemcache('127.0.0.1',11211); 2 $memcache->set('memcache','come on dluf&baidu !!!!!!'); 3 $ret = $memcache->get('memcache'); 4 echo print_r($ret,true);
Le résultat en cours d'exécution est visible :
Vous voulez en savoir plus sur PHP ? Alors dépêchez-vous et suivez le Tutoriel vidéo PHP sur le site PHP chinois !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!