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');



  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,下面是 Laravel 使用数据库、Redis 连接池的示例代码: 1. 数据库连接池示例代码 在 Laravel 中,可以通过配置文件来进行数据库连接池的配置。以下是一个示例的 `config/database.php` 文件的配置: ```php 'mysql' => [ 'driver' => 'mysql', 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'prefix_indexes' => true, 'strict' => true, 'engine' => null, 'options' => [ PDO::ATTR_PERSISTENT => true, // 使用持久连接 ], ], ``` 在上面的配置中,将 `PDO::ATTR_PERSISTENT` 设置为 `true`,即可使用持久连接,从而达到连接池的效果。 2. Redis 连接池示例代码 在 Laravel 中,可以通过配置文件来进行 Redis 连接池的配置。以下是一个示例的 `config/database.php` 文件的配置: ```php 'redis' => [ 'client' => env('REDIS_CLIENT', 'phpredis'), 'options' => [ 'cluster' => env('REDIS_CLUSTER', 'redis'), 'prefix' => env('REDIS_PREFIX', ''), ], 'default' => [ 'url' => env('REDIS_URL'), 'host' => env('REDIS_HOST', '127.0.0.1'), 'password' => env('REDIS_PASSWORD', null), 'port' => env('REDIS_PORT', '6379'), 'database' => env('REDIS_DB', '0'), 'persistent' => true, // 使用持久连接 ], 'cache' => [ 'url' => env('REDIS_URL'), 'host' => env('REDIS_HOST', '127.0.0.1'), 'password' => env('REDIS_PASSWORD', null), 'port' => env('REDIS_PORT', '6379'), 'database' => env('REDIS_CACHE_DB', '1'), 'persistent' => true, // 使用持久连接 ], ], ``` 在上面的配置中,将 `persistent` 设置为 `true`,即可使用持久连接,从而达到连接池的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值