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 中文字符入库或显示乱码问题的解决方法
Apr 12 PHP
PHP学习笔记之数组篇
Jun 28 PHP
PHP file_exists问题杂谈
May 07 PHP
解决File size limit exceeded 错误的方法
Jun 14 PHP
PHP实现的封装验证码类详解
Jun 18 PHP
php代码审计比较有意思的例子
May 07 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
Jul 22 PHP
PHP封装的PDO数据库操作类实例
Jun 21 PHP
PHP实现的mysql主从数据库状态检测功能示例
Jul 20 PHP
Laravel构建即时应用的一种实现方法详解
Aug 31 PHP
使用PHP开发留言板功能
Nov 19 PHP
php实现根据身份证获取精准年龄
Feb 26 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
Smarty的配置与高级缓存技术分享
2012/06/05 PHP
php创建基本身份认证站点的方法详解
2013/06/08 PHP
chrome下jq width()方法取值为0的解决方法
2014/05/26 Javascript
nodejs通过phantomjs实现下载网页
2015/05/04 NodeJs
jQuery插件kinMaxShow扩展效果用法实例
2015/05/04 Javascript
jQuery Mobile弹出窗、弹出层知识汇总
2016/01/05 Javascript
修改Jquery Dialog 位置的实现方法
2016/08/26 Javascript
JavaScript实现大图轮播效果
2017/01/11 Javascript
微信小程序 连续旋转动画(this.animation.rotate)详解
2017/04/07 Javascript
JQuery 获取Dom元素的实例讲解
2017/07/08 jQuery
AngularJS实现自定义指令及指令配置项的方法
2017/11/20 Javascript
小程序调用微信支付的方法
2019/09/26 Javascript
vue+canvas实现移动端手写签名
2020/05/21 Javascript
解决echarts 一条柱状图显示两个值,类似进度条的问题
2020/07/20 Javascript
小程序中手机号识别的示例
2020/12/14 Javascript
python基于mysql实现的简单队列以及跨进程锁实例详解
2014/07/07 Python
日常整理python执行系统命令的常见方法(全)
2015/10/22 Python
Python数据结构之栈、队列的实现代码分享
2017/12/04 Python
python的exec、eval使用分析
2017/12/11 Python
python 模拟创建seafile 目录操作示例
2019/09/26 Python
Python 3.6打包成EXE可执行程序的实现
2019/10/18 Python
Python预测2020高考分数和录取情况
2020/07/08 Python
解决python打开https出现certificate verify failed的问题
2020/09/03 Python
Python Charles抓包配置实现流程图解
2020/09/29 Python
Django中使用Celery的方法步骤
2020/12/07 Python
HTML5 声明兼容IE的写法
2011/05/16 HTML / CSS
曼联官方网上商店:Manchester United Direct
2017/07/28 全球购物
Expedia瑞典官网:预订度假屋、酒店、汽车租赁、机票等
2021/01/23 全球购物
乡镇总工会学雷锋活动总结
2014/03/01 职场文书
四风查摆剖析材料
2014/10/10 职场文书
买房协议书范本
2014/10/23 职场文书
办公室岗位职责
2015/02/04 职场文书
天堂的孩子观后感
2015/06/11 职场文书
汶川大地震感悟
2015/08/10 职场文书
志愿者工作心得体会
2016/01/15 职场文书
《鲁班学艺》读后感3篇
2019/11/27 职场文书