zoukankan      html  css  js  c++  java
  • 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 !

  • 相关阅读:
    Flex的 Event中属性currentTarget与target的差别
    考研复试机试题(2010)
    Android应用性能优化之使用SparseArray替代HashMap
    机房收费重构版总结
    中英文对照 —— 缩略词
    NLP(paper + code)
    NLP(paper + code)
    优化与凸优化初始
    优化与凸优化初始
    工具类与工具函数 —— 素数相关
  • 原文地址:https://www.cnblogs.com/daizhongxing/p/13840211.html
Copyright © 2011-2022 走看看