Maison  >  Article  >  développement back-end  >  Encapsuler Redis en mode singleton en PHP

Encapsuler Redis en mode singleton en PHP

Guanhui
Guanhuiavant
2020-06-09 09:13:003726parcourir

Encapsuler Redis en mode singleton en PHP

Le modèle singleton est l'une des formes les plus simples de modèles de conception. Le but de ce modèle est de faire d'un objet d'une classe la seule instance du système. Pour y parvenir, vous commencez par l’instancier côté client. Il est donc nécessaire d'utiliser un mécanisme qui permet uniquement la génération d'instances uniques de la classe d'objet, "bloquant" tout accès à l'objet que l'on souhaite générer. Utilisez des méthodes d'usine pour limiter le processus d'instanciation. Cette méthode doit être une méthode statique (méthode de classe), car il ne sert à rien qu’une instance de la classe génère une autre instance unique.

<?php
/** 
* Created by PhpStorm. 
* User: Administrator 
* Date: 2018/7/16 
* Time: 14:19 
*/
/** 
* 实现同步实现同步redis 
*/
namespace  app\common\lib\redis;
class Predis{ 
   
/**     
* 单例模式的变量     
* @var null     
*/    
private static $_instance=null;     
public $redis = &#39;&#39;;
      
/**     
* 单例模式应用防止多次连接redis,提高性能     
* @return Predis|null     
*/    
public static function getInstance(){        
    if(is_null(self::$_instance) || empty(self::$_instance)){            
        self::$_instance = new self();        
    }        
    return self::$_instance;    
}
      
/**     
*连接redis     
*/    
private function __construct()    {        
    $this->redis = new \Redis();        
    $result = $this->redis->connect(config(&#39;redis.host&#39;), config(&#39;redis.port&#39;));       
    if($result==false){            
        throw new \Exception(&#39;redis connect fail&#39;);        
    }     
}     
/**     
*redis set方法的应用     
* @param $key     
* @param $value     
* @param int $time     
* @return bool|string     
*/    
public function set($key,$value,$time=0){        
    if(!$key){            
        return &#39;&#39;;        
    }         
    if(is_array($value)){            
        $value = json_encode($value);       
    }         
    if(!$time){            
        return $this->redis->set($key,$value);       
    }        
    return $this->redis->setex($key,$time,$value);    
}     
/**     
* redis get方法     
* @param $key     
* @return string     
*/    
public function get($key){        
    if(!$key){            
        return &#39;&#39;;        
    }        
    return $this->redis->get($key);    
}     
/**     
* 获取有序列表的结合     
* @param $key     
* @return array     
*/    
public function sMembers($key) {        
    return $this->redis->sMembers($key);    
}      
/**     
* 获取list的元素值结合     
*/    
public function lRange($key){        
    var_dump($key);        
    return $this->redis->lRange($key,0,-1);    
}     
/**     
* 魔术方法__call     
*/    
public function __call($name, $arguments) {        
    echo $name.PHP_EOL;        
    print_r($arguments);        
    if(count($arguments) != 2) {            
        return &#39;&#39;;       
    }        
    $this->redis->$name($arguments[0], $arguments[1]);   
} 
}

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer