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 !

  • 相关阅读:
    关于产品
    Windows服务 + Quartz.NET
    C#
    C#
    URL
    前端生态系统总结
    字符串相似度
    Process Explore & Windbg
    webpack
    JS
  • 原文地址:https://www.cnblogs.com/daizhongxing/p/13840211.html
Copyright © 2011-2022 走看看