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

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();
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容