php redis实现连接池
2018-01-31 16:43
288 查看
什么是连接池?
通常情况下, 当我们需要做redis操作时, 会创建一个连接, 并基于这个连接进行redis操作, 操作完成后, 释放连接,一般情况下, 这是没问题的, 但当并发量比较高的时候, 频繁的连接创建和释放对性能会有较高的影响于是, 连接池就发挥作用了连接池的原理是, 通过预先创建多个连接, 当进行redis操作时, 直接获取已经创建的连接进行操作, 而且操作完成后, 不会释放, 用于后续的其他redis操作这样就达到了避免频繁的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');
相关文章推荐
- php 监控redis队列的长度,在队列堆积的时候实现微信报警
- php结合redis实现高并发下的抢购、秒杀功能 (转载)
- 通过redis实现session共享-php
- 基于Nginx+PHP+Redis的短URL系统的实现
- php redis实现文章发布系统(用户投票系统)
- Redis实现分布式锁 php
- PHP分布式中Redis实现Session
- php结合redis实现高并发下的抢购、秒杀功能
- php结合redis实现高并发下的抢购、秒杀功能
- 用redis实现悲观锁(后端语言以php为例)
- redis实现简单的消息队列(php)
- PHP使用redis实现统计缓存mysql压力的方法
- mysql,redis客户端连接池和线程池的Linux C编程实现(★firecat推荐★)
- PHP实现redis限制单ip、单用户的访问次数功能示例
- php结合redis实现高并发下的抢购、秒杀功能的实例
- Redis3.0集群crc16算法php实现方法(php取得redis3.0集群中redis数据所在的redis分区插槽,并根据分区插槽取得分区所在redis服务器地址)
- PHP实现的Redis多库选择功能单例类
- PHP 如何在Redis中实现事物(事物提交和事物回滚)
- PHP实现Redis单据锁以及防止并发重复写入
- php实现Session存储到Redis