• PHP 实现 Redis 连接池


    使用连接池的原因:在高并发情况下,频繁地创建和释放 Redis 连接会对性能有较大影响。

    连接池的原理:预先创建多个 Redis 连接,在进行 Redis 操作时直接获取已经创建的连接进行操作,操作完成后不会释放,后续其他 Redis 操作可以继续使用。这样就避免了频繁的 Redis 连接和释放。

    示例代码:

    1、连接池类:

    <?php
    
    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];
        }
    }

    2、使用:

    //连接redis
    function connect_to_redis()
    {
        global $CONFIG;
        //使用redis连接池
        $conf = array(
            'RA' => array($CONFIG['REDIS']['HOST'],$CONFIG['REDIS']['PORT'],$CONFIG['REDIS']['PASSWORD'])   //定义Redis配置
        );
        RedisPool::addServer($conf); //添加Redis配置
        $redis = RedisPool::getRedis('RA',1); //连接RA,使用默认0库
        return $redis;
    }

    Enjoy it !

  • 相关阅读:
    SQLite3 of python
    爬虫半成品
    python初体验 ——>>> 模拟体育竞技
    文件操作
    numpy 库简单使用
    numpy 与 matplotlib 的应用
    面向对象的详细解读
    使用python进行微信好友分析
    我的第一个爬虫实验
    排球训练营
  • 原文地址:https://www.cnblogs.com/daizhongxing/p/13840211.html
Copyright © 2020-2023  润新知