美文网首页
redis连接池单例实现

redis连接池单例实现

作者: happywho250 | 来源:发表于2019-07-12 15:10 被阅读0次
<?php

// redis连接池
class RedisPool
{
    private static $connections = array(); // 已经连接的对象.

    private static $servers = array(); // 服务集群配置

    private function __construct() // 私有的构造方法 无法被外部直接实例化.
    {

    }

    /**
     * 执行添加redis服务器.
     * @param $config array 需要进行连接的redis配置 array('default' => array('host' => '','port' => '','password' => ''))
     */
    public static function addServer()
    {
        if(empty(self::$servers)) {
            self::$servers = new \Config\Redis();
        }
    }


    /**
     * 获取redis单例
     * @param string $node
     * @param int $select
     * @return mixed
     */
    public static function getInstance($node='default',$select=0)
    {
        if(!key_exists($node,self::$connections)) {
            // 添加服务器配置.
            self::addServer();

            // 初始化连接.
            $redis = new Redis();
            $redis->connect(self::$servers[$node]['host'],self::$servers[$node]['port']);

            if (!empty(self::$servers[$node]['password'])) {
                $redis->auth(self::$servers[$node]['password']);
            }

            self::$connections[$node] = $redis;

            self::$connections[$node]->select($select);

        }

        return self::$connections[$node];
    }
}

相关文章

网友评论

      本文标题:redis连接池单例实现

      本文链接:https://www.haomeiwen.com/subject/xmaekctx.html