PHP实现的Redis多库选择功能单例类


Posted in PHP onJuly 27, 2017

本文实例讲述了PHP实现的Redis多库选择功能单例类。分享给大家供大家参考,具体如下:

前言

qq群里有同学问redis如何进行多库选择,用php实现了一下,还望各位多多指点

代码

<?php
class MultiRedisConnect
{
  /**
   * hostname
   *
   * @var string
   */
  const REDISHOSTNAME = "127.0.0.1";
  /**
   * port
   *
   * @var int
   */
  const REDISPORT = 6379;
  /**
   * timeout
   *
   * @var int
   */
  const REDISTIMEOUT = 0;
  /**
   * password
   *
   * @var string
   */
  const REDISPASSWORD = "123456";
  /**
   * 类单例数组
   *
   * @var array
   */
  private static $instance = array();
  /**
   * redis连接句柄
   *
   * @var object
   */
  private $redis;
  /**
   * hash的key
   *
   * @var int
   */
  private $hash;
  /**
   * 私有化构造函数,防止类外实例化
   *
   * @param int $dbnumber
   */
  private function __construct ($dbnumber)
  {
    $dbnumber = (int) $dbnumber;
    $this->hash = $dbnumber;
    $this->redis = new Redis();
    $this->redis->connect(self::REDISHOSTNAME, self::REDISPORT, self::REDISTIMEOUT);
    $this->redis->auth(self::REDISPASSWORD);
    $this->redis->select($dbnumber);
  }
  private function __clone ()
  {}
  /**
   * 获取类单例
   *
   * @param int $dbnumber
   * @return object
   */
  public static function getRedisInstance ($dbnumber)
  {
    $hash = (int) $dbnumber;
    if (! isset(self::$instance[$hash])) {
      self::$instance[$hash] = new MultiRedisConnect($dbnumber);
    }
    return self::$instance[$hash];
  }
  /**
   * 获取redis的连接实例
   *
   * @return object
   */
  public function getRedisConnect ()
  {
    return $this->redis;
  }
  /**
   * 关闭单例时做清理工作
   */
  public function __destruct ()
  {
    $key = $this->hash;
    self::$instances[$key]->redis->close();
    self::$instances[$key] = null;
  }
}
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
dedecms中显示数字验证码的修改方法
Mar 21 PHP
linux php mysql数据库备份实现代码
Mar 10 PHP
探讨:array2xml和xml2array以及xml与array的互相转化
Jun 24 PHP
php如何解决无法上传大于8M的文件问题
Mar 10 PHP
PHP异常处理浅析
May 12 PHP
jQuery+php简单实现全选删除的方法
Nov 28 PHP
PHP API接口必备之输出json格式数据示例代码
Jun 27 PHP
PHP内部实现打乱字符串顺序函数str_shuffle的方法
Feb 14 PHP
PHP正则验证字符串是否为数字的两种方法并附常用正则
Feb 27 PHP
PHP swoole和redis异步任务实现方法分析
Aug 12 PHP
phpstudy隐藏index.php的方法
Sep 21 PHP
php将xml转化对象的实例详解
Nov 17 PHP
PHP策略模式定义与用法示例
Jul 27 #PHP
windows下的WAMP环境搭建图文教程(推荐)
Jul 27 #PHP
php表单文件iframe异步上传实例讲解
Jul 26 #PHP
php实现的统计字数函数定义与使用示例
Jul 26 #PHP
PHP SFTP实现上传下载功能
Jul 26 #PHP
Windows平台实现PHP连接SQL Server2008的方法
Jul 26 #PHP
php判断str字符串是否是xml格式数据的方法示例
Jul 26 #PHP
You might like
给apache2.2加上mod_encoding模块後 php5.2.0 处理url出现bug
2007/04/12 PHP
56.com视频采集接口程序(PHP)
2007/09/22 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
2015/04/08 PHP
php检查是否是ajax请求的方法
2015/04/16 PHP
PHP数学运算函数大汇总(经典值得收藏)
2016/04/01 PHP
Yii2增删改查之查询 where参数详细介绍
2016/08/08 PHP
jquery及原生js获取select下拉框选中的值示例
2013/10/25 Javascript
js获得当前时区夏令时发生和终止的时间代码
2014/02/23 Javascript
浅谈JavaScript Date日期和时间对象
2014/12/29 Javascript
JavaScript实现广告的关闭与显示效果实例
2015/07/02 Javascript
js实现获取当前时间是本月第几周的方法
2015/08/11 Javascript
JavaScript数组的栈方法与队列方法详解
2016/05/26 Javascript
js canvas实现擦除效果示例代码
2017/04/26 Javascript
基于JavaScript+HTML5 实现打地鼠小游戏逻辑流程图文详解(附完整代码)
2017/11/02 Javascript
实例讲解javascript实现异步图片上传方法
2017/12/05 Javascript
js自定义trim函数实现删除两端空格功能
2018/02/09 Javascript
使用 webpack 插件自动生成 vue 路由文件的方法
2019/08/20 Javascript
JS实现前端路由功能示例【原生路由】
2020/05/29 Javascript
[44:01]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS paiN
2018/03/31 DOTA
Python牛刀小试密码爆破
2011/02/03 Python
TensorFlow如何实现反向传播
2018/02/06 Python
django请求返回不同的类型图片json,xml,html的实例
2018/05/22 Python
Python中Numpy mat的使用详解
2019/05/24 Python
Python3内置模块之base64编解码方法详解
2019/07/13 Python
DJANGO-URL反向解析REVERSE实例讲解
2019/10/25 Python
Pytorch 实现权重初始化
2019/12/31 Python
python使用dlib进行人脸检测和关键点的示例
2020/12/05 Python
Python实现区域填充的示例代码
2021/02/03 Python
世界各地的旅游、观光和活动:Isango!
2019/10/29 全球购物
应届毕业生的个人自我鉴定
2013/10/24 职场文书
小学运动会入场式解说词
2014/02/18 职场文书
珍惜资源的建议书
2014/08/26 职场文书
运动会三级跳加油稿
2015/07/21 职场文书
动画《新网球王子 U-17 WORLD CUP》希腊队PV公开
2022/04/02 日漫
JS中forEach()、map()、every()、some()和filter()的用法
2022/05/11 Javascript
CSS浮动引起的高度塌陷问题
2022/08/05 HTML / CSS