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 相关文章推荐
一个简单计数器的源代码
Oct 09 PHP
使用Xdebug调试和优化PHP程序之[1]
Apr 17 PHP
PHP 无限分类三种方式 非函数的递归调用!
Aug 26 PHP
解析php安全性问题中的:Null 字符问题
Jun 21 PHP
php生成缩略图示例代码分享(使用gd库实现)
Jan 20 PHP
3个PHP多维数组转为一维数组的方法实例
Mar 13 PHP
在PHP中使用X-SendFile头让文件下载更快
Jun 01 PHP
php的SimpleXML方法读写XML接口文件实例解析
Jun 16 PHP
php中json_encode UTF-8中文乱码的更好解决方法
Sep 28 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
Dec 21 PHP
基于laravel belongsTo使用详解
Oct 18 PHP
thinkPHP框架乐观锁和悲观锁实例分析
Oct 30 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
PHP @ at 记号的作用示例介绍
2014/10/10 PHP
ThinkPHP模板中数组循环实例
2014/10/30 PHP
PHP网站开发中常用的8个小技巧
2015/02/13 PHP
PHP面向对象程序设计实例分析
2016/01/26 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
js 三级关联菜单效果实例
2013/08/13 Javascript
使用FlexiGrid实现Extjs表格效果方法分享
2014/12/16 Javascript
JavaScript sort数组排序方法和自我实现排序方法小结
2016/06/06 Javascript
bootstrap modal弹出框的垂直居中
2016/12/14 Javascript
bootstrap组件之按钮式下拉菜单小结
2017/01/19 Javascript
基于angular-utils-ui-breadcrumbs使用心得(分享)
2017/11/03 Javascript
vue mint-ui tabbar变组件使用
2018/05/04 Javascript
如何实现一个简易版的vuex持久化工具
2019/09/11 Javascript
微信小程序绑定手机号获取验证码功能
2019/10/22 Javascript
在Linux下使用Python的matplotlib绘制数据图的教程
2015/06/11 Python
Python 基础教程之闭包的使用方法
2017/09/29 Python
python matplotlib绘图,修改坐标轴刻度为文字的实例
2018/05/25 Python
Django框架模型简单介绍与使用分析
2019/07/18 Python
python二元表达式用法
2019/12/04 Python
python按照list中字典的某key去重的示例代码
2020/10/13 Python
详解BeautifulSoup获取特定标签下内容的方法
2020/12/07 Python
基于Html5 canvas实现裁剪图片和马赛克功能及又拍云上传图片 功能
2019/07/09 HTML / CSS
美国时尚女装在线:Missguided
2016/12/03 全球购物
英国最大的女性服装零售商:Dorothy Perkins
2017/03/30 全球购物
ebookers英国:隶属全球最大的在线旅游公司Expedia
2017/12/28 全球购物
工商企业管理应届生求职信
2013/11/03 职场文书
优秀应届毕业生推荐信
2014/02/18 职场文书
酒店开业策划方案
2014/06/02 职场文书
5s标语大全
2014/06/23 职场文书
洗手间标语
2014/06/23 职场文书
群众路线教育实践活动的心得体会
2014/09/03 职场文书
风之谷观后感
2015/06/11 职场文书
教师廉政准则心得体会
2016/01/20 职场文书
Python中else的三种使用场景
2021/06/16 Python
Python FuzzyWuzzy实现模糊匹配
2022/04/28 Python
python如何将mat文件转为png
2022/07/15 Python