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 相关文章推荐
PHP实现多服务器session共享之NFS共享的方法
Mar 16 PHP
关于session在PHP5的配置文件中的详细设置参数说明
Apr 20 PHP
浅谈php优化需要注意的地方
Nov 27 PHP
PHP面向对象详解(三)
Dec 07 PHP
Joomla实现组件中弹出一个模式(modal)窗口的方法
May 04 PHP
Yii调试查看执行SQL语句的方法
Jul 15 PHP
PHP实现的曲线统计图表示例
Nov 10 PHP
PHP实现登陆表单提交CSRF及验证码
Jan 24 PHP
PHP编程获取图片的主色调的方法【基于Imagick扩展】
Aug 02 PHP
php工具型代码之印章抠图
Jul 18 PHP
Laravel中为什么不使用blpop取队列详析
Aug 01 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
Mar 24 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
Codeigniter生成Excel文档的简单方法
2014/06/12 PHP
destoon文章模块调用企业会员资料的方法
2014/08/22 PHP
php防止用户重复提交表单
2015/11/02 PHP
微信支付PHP SDK之微信公众号支付代码详解
2015/12/09 PHP
详解PHP中cookie和session的区别及cookie和session用法小结
2016/06/12 PHP
一段实时更新的时间代码
2006/07/07 Javascript
JS模拟多线程
2007/02/07 Javascript
JavaScript必知必会(五) eval 的使用
2016/06/08 Javascript
详解Webpack DLL用法以及功能
2017/07/11 Javascript
基于js粘贴事件paste简单解析以及遇到的坑
2017/09/07 Javascript
Nodejs实现文件上传的示例代码
2017/09/26 NodeJs
JS实现定时任务每隔N秒请求后台setInterval定时和ajax请求问题
2017/10/15 Javascript
vue使用rem实现 移动端屏幕适配
2018/09/26 Javascript
原生JS实现的放大镜特效示例【测试可用】
2018/12/08 Javascript
node实现socket链接与GPRS进行通信的方法
2019/05/20 Javascript
JavaScript实现留言板案例
2020/03/17 Javascript
ES6扩展运算符和rest运算符用法实例分析
2020/05/23 Javascript
[01:25:38]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第一场 1月19日
2021/03/11 DOTA
python打包压缩、读取指定目录下的指定类型文件
2018/04/12 Python
TensorFlow实现随机训练和批量训练的方法
2018/04/28 Python
python逆序打印各位数字的方法
2018/06/25 Python
Python利用递归实现文件的复制方法
2018/10/27 Python
对python列表里的字典元素去重方法详解
2019/01/21 Python
python3.6数独问题的解决
2019/01/21 Python
django模板加载静态文件的方法步骤
2019/03/01 Python
Django ORM多对多查询方法(自定义第三张表&amp;ManyToManyField)
2019/08/09 Python
python3文件复制、延迟文件复制任务的实现方法
2019/09/02 Python
python 循环数据赋值实例
2019/12/02 Python
python3连接MySQL8.0的两种方式
2020/02/17 Python
python pandas.DataFrame.loc函数使用详解
2020/03/26 Python
Python如何实现远程方法调用
2020/08/07 Python
安全守法证明
2015/06/23 职场文书
2016年班主任培训心得体会
2016/01/07 职场文书
javaScript Array api梳理
2021/03/31 Javascript
Golang 如何实现函数的任意类型传参
2021/04/29 Golang
python单元测试之pytest的使用
2021/06/07 Python