首页 > 数据库 >php代码实现redis连接池

php代码实现redis连接池

时间:2022-08-25 10:12:07浏览次数:86  
标签:self redis servers connections alias php 连接 连接池

通常情况下, 当我们需要做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');
————————————————
版权声明:本文为CSDN博主「yang洋PHPer」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34341290/article/details/79219145

标签:self,redis,servers,connections,alias,php,连接,连接池
From: https://www.cnblogs.com/jmbt/p/16623295.html

相关文章

  • PHP代码连接Redis,含Redis密码验证、指定某一Redis数据库
    <?php$redis=newRedis();$redis->connect('127.0.0.1',6379);//连接Redis$redis->auth('mypasswords123sdfeak');//密码验证$redis->select(2);//选择......
  • Redis的访问安全
    redis连接不上,查看进程gpg-agentd刷爆CPU,恭喜你,你被挖矿了_保爷99的博客-CSDN博客 https://blog.csdn.net/mengruobaobao/article/details/79612423最近发现有一台测......
  • redis 2.2.7 for Windows
    PECL::Package::redis2.2.7forWindows http://pecl.php.net/package/redis/2.2.7/windowsredis2.2.7forWindowsPackageInformationSummaryPHPex......
  • Redis连环问
    Redis连环问Redis为什么这么快呢?基于内存:Redis是使用内存存储,没有磁盘IO上的开销。数据存在内存中,读写速度快。单线程实现(Redis6.0以前):Redis使用单个线程处理请求,避......
  • Redis(6)------通用命令
    Key相关命令在redis中无论什么数据类型,在数据库中都是以Key-value形式保存,通过进行对Redis-Key的操作来完成对数据库中数据的操作。常用命令keys*:查看当前数据库中的所......
  • Redis集群模式搭建
    Redis主要有三种集群方案:主从模式哨兵模式集群模式集群模式搭建Redis3.0版本之后才可用,推荐3主3从集群模式。1.启动6台Redis配置文件如下,redis_7002.conf...类......
  • windows环境 php 连接 sql server
    下载扩展:MicrosoftDriversforPHPforSQLServer https://www.microsoft.com/en-us/download/details.aspx?id=20098ODBCDriver:Microsoft®ODBCDriver11forS......
  • 钉钉群机器人群发[ PHP ]
    //secret机器人设置-加签秘钥//access_token机器人设置-Webhook带此参数//message机器人设置-关键词设置的内容需要和message一致publicfunctionuse......
  • php本地上传文件类
    /***ClassUploadFile*@authorfengzi*/classUploadFile{public$error=array();//上传前的error信息public$info=array();//上传过......
  • mysql php js 经纬度 转换 查询
    坐标系介绍地球坐标(WGS84)WGS-84:是国际标准,GPS坐标(GoogleEarth使用、或者GPS模块)国际标准,从专业GPS设备中取出的数据的坐标系国际地图提供商使用的坐标系火星坐......