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]);
            $redis->pconnect(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');
联系我们

邮箱 626512443@qq.com
电话 18611320371(微信)
QQ群 235681453

Copyright © 2015-2024

备案号:京ICP备15003423号-3