class RedisSingleton
{
/**
* 本地保存的单例
* @var unknown
*/
private static $instance;
/**
* 本地保存的Redis实例
* @var object
*/
private $redis;
/**
* Redis连接参数
* @var array
*/
private $config = [
'host' => '127.0.0.1',
'port' => 6379,
'pass' => '',
];
//防止直接创建对象
private function __construct()
{
$this->redis = new \Redis();
//连接redis
$this->redis->connect($this->config['host'], $this->config['port']);
if ($this->config['pass']) {
$this->redis->auth($this->config['pass']);
}
}
//防止克隆对象
private function __clone()
{
}
//单一获取对象入口
public static function getInstance()
{
if (!self::$instance instanceof self) {
self::$instance = new self();
}
return self::$instance->redis;
}
/**
* 设置Redis连接参数
* @param array $config Redis连接参数
*/
public function setConfig($config)
{
$this->config = array_merge($this->config, $config);
}
}
//获取Redis实例
$redis = RedisSingleton::getInstance();
//修改Redis连接参数
RedisSingleton::setConfig(['host' => '127.0.0.2']);
//获取修改后的Redis实例
$redis = RedisSingleton::getInstance();