Heim  >  Artikel  >  Backend-Entwicklung  >  PHP nennt als Beispiel die MEMCACHE-Caching-Technologie

PHP nennt als Beispiel die MEMCACHE-Caching-Technologie

little bottle
little bottlenach vorne
2019-04-20 10:42:182418Durchsuche

In Projekten mit großem Datenverkehr kann eine sinnvolle Verwendung des Caches den Druck auf die Datenbank verringern und die Benutzererfahrung verbessern. Das heißt, unter der Voraussetzung von Nicht-Echtzeitanforderungen werden die zur Anzeige verwendeten Daten innerhalb kurzer Zeit (einige Sekunden) aus dem Cache abgerufen, ohne dass die Datenbank direkt gelesen werden muss, wodurch der Lesedruck effektiv verringert werden kann Datenbank. Hier ist eine Aufzeichnung der Verwendung von Memcache in der PHP-Sprache:

Zuerst erstellen wir einen Memcachepool, der je nach Konfiguration gelesen werden kann und unterschiedliche Memcache-Instanzen generiert. Verwenden Sie $memcache->addServer($host,$port,$flag); um einen Memcache-Server zum Verbindungspool hinzuzufügen. Das Codebeispiel lautet wie folgt:

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;
     }
 }

Implementieren Sie dann eine Methodenklasse, die gängige Memcache-Methoden wie Add, Set, Get, Flush, Delete usw. enthält. Hier heißt es 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;
    }
 }

und rufen Sie dann dlufmemcache auf:

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);

Die laufende Ausgabe ist sichtbar:

Möchten Sie mehr über PHP erfahren? Dann beeilen Sie sich und folgen Sie dem PHP-Video-Tutorial auf der chinesischen PHP-Website!

Das obige ist der detaillierte Inhalt vonPHP nennt als Beispiel die MEMCACHE-Caching-Technologie. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen