Rumah > pembangunan bahagian belakang > tutorial php > 在 PHP 中将 Redis 封装成单例模式

在 PHP 中将 Redis 封装成单例模式

Guanhui
Lepaskan: 2023-04-08 19:52:01
ke hadapan
3765 orang telah melayarinya

在 PHP 中将 Redis 封装成单例模式

单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例。要实现这一点,可以从客户端对其进行实例化开始。因此需要用一种只允许生成对象类的唯一实例的机制,“阻止”所有想要生成对象的访问。使用工厂方法来限制实例化过程。这个方法应该是静态方法(类方法),因为让类的实例去生成另一个唯一实例毫无意义。

<?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]);   
} 
}
Salin selepas log masuk

Atas ialah kandungan terperinci 在 PHP 中将 Redis 封装成单例模式. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:juejin.im
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan