php 封装redis 单例模式 2022-11-15

2022-11-14  本文已影响0人  阿然学编程
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();
上一篇 下一篇

猜你喜欢

热点阅读