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
ADODB的数据库封包程序库
Dec 31 PHP
ajax php传递和接收变量实现思路及代码
Dec 19 PHP
使用phpQuery采集网页的方法
Nov 13 PHP
PHP调用VC编写的COM组件实例
Mar 29 PHP
PHP中的数组处理函数实例总结
Jan 09 PHP
PHP使用curl制作简易百度搜索
Nov 03 PHP
轻松实现php文件上传功能
Feb 17 PHP
php设计模式之装饰模式应用案例详解
Jun 17 PHP
Centos7 Yum安装PHP7.2流程教程详解
Jul 02 PHP
php DES加密算法实例分析
Sep 18 PHP
php微信小程序解包过程实例详解
Mar 31 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
mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
2009/04/24 PHP
php中的注释、变量、数组、常量、函数应用介绍
2012/11/16 PHP
如何使用PHP实现javascript的escape和unescape函数
2013/06/29 PHP
表单提交时自动复制内容到剪贴板的js代码
2007/03/16 Javascript
javascript 学习笔记(一)DOM基本操作
2011/04/08 Javascript
Jquery post传递数组方法实现思路及代码
2013/04/28 Javascript
Javascript 多浏览器兼容总结(实战经验)
2013/10/30 Javascript
完美兼容各大浏览器的jQuery插件实现图片切换特效
2014/12/12 Javascript
JavaScript中的原型继承基础学习教程
2016/05/06 Javascript
jQuery中text() val()和html()的区别实例详解
2016/06/28 Javascript
实例详解jQuery的无new构建
2016/08/02 Javascript
Bootstrap复选框和单选按钮美化插件(推荐)
2016/11/23 Javascript
JS对象是否拥有某属性如何判断
2017/02/03 Javascript
学习使用jQuery表单验证插件和日历插件
2017/02/13 Javascript
基于Swiper实现移动端页面图片轮播效果
2017/12/28 Javascript
使用Vue写一个datepicker的示例
2018/01/27 Javascript
vue+vuex+axios实现登录、注册页权限拦截
2018/03/09 Javascript
VeeValidate 的使用场景以及配置详解
2019/01/11 Javascript
详解基于原生JS验证表单组件xy-form
2019/08/20 Javascript
[01:25]DOTA2自定义游戏灵园鬼域等你踏足
2015/10/30 DOTA
python3音乐播放器简单实现代码
2020/04/20 Python
python TF-IDF算法实现文本关键词提取
2019/05/29 Python
python中的decimal类型转换实例详解
2019/06/26 Python
通过字符串导入 Python 模块的方法详解
2019/10/27 Python
python判断链表是否有环的实例代码
2020/01/31 Python
如何在python中判断变量的类型
2020/07/29 Python
教师评优的个人自我评价分享
2013/09/19 职场文书
工程造价专业大学生自荐信
2013/10/01 职场文书
2014年应届大学生毕业自我鉴定
2014/01/31 职场文书
《周恩来的四个昼夜》观后思想汇报范文两篇
2014/09/10 职场文书
教师工作证明范本
2015/06/12 职场文书
vue backtop组件的实现完整代码
2021/04/07 Vue.js
Oracle 区块链表创建过程详解
2021/05/15 Oracle
如何在Mac上通过docker配置PHP开发环境
2021/05/29 PHP
JavaScript执行机制详细介绍
2021/12/06 Javascript
vue使用refs获取嵌套组件中的值过程
2022/03/31 Vue.js