php redis實現連接池

什麼是連接池?

redis連接靜態類。redis連接池 減少redis的重複連接,降低內存消耗!
通常情況下, 當我們需要做redis操作時, 會創建一個連接, 並基於這個連接進行redis操作, 操作完成後, 釋放連接,一般情況下, 這是沒問題的, 但當併發量比較高的時候, 頻繁的連接創建和釋放對性能會有較高的影響於是, 連接池就發揮作用了連接池的原理是, 通過預先創建多個連接, 當進行redis操作時, 直接獲取已經創建的連接進行操作, 而且操作完成後, 不會釋放, 用於後續的其他redis操作這樣就達到了避免頻繁的redis連接創建和釋放的目的, 從而提高性能了

class RedisPool
    {
        private static $connections = array(); //定義一個對象池
        private static $servers = array(); //定義redis配置文件
        public static function addServer($conf) //定義添加redis配置方法
        {
            foreach ($conf as $alias => $data){
                self::$servers[$alias]=$data;
            }
        }

        public static function getRedis($alias,$select = 0)//兩個參數要連接的服務器KEY,要選擇的庫
        { 
            if(!array_key_exists($alias,self::$connections)){  //判斷連接池中是否存在
                $redis = new Redis();
                $redis->connect(self::$servers[$alias][0],self::$servers[$alias][1]);
                self::$connections[$alias]=$redis;
                if(isset(self::$servers[$alias][2]) && self::$servers[$alias][2]!=""){ 
                    self::$connections[$alias]->auth(self::$servers[$alias][2]);
                }
            }
            self::$connections[$alias]->select($select);
            return self::$connections[$alias];
        }
    }

使用過程:

require 'RedisPool.php';
$conf = array( 
    'RA' => array('127.0.0.1',6379)   //定義Redis配置
);
RedisPool::addServer($conf); //添加Redis配置
$redis = RedisPool::getRedis('RA'); //連接RA,使用默認0庫
$redis->set('user','private');
echo $redis ->get('user');



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章