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的FTP学习(二)
Oct 09 PHP
PHP 面向对象实现代码
Nov 11 PHP
php设计模式小结
Feb 15 PHP
获取PHP警告错误信息的解决方法
Jun 03 PHP
php生成图形(Libchart)实例
Nov 06 PHP
ThinkPHP CURD方法之limit方法详解
Jun 18 PHP
destoon二次开发模板及调用语法汇总
Jun 21 PHP
浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
Aug 11 PHP
php中mkdir函数用法实例分析
Nov 15 PHP
php 三元运算符实例详细介绍
Dec 15 PHP
PHP二维数组去重算法
Dec 17 PHP
PHP创建对象的六种方式实例总结
Jun 27 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代码
2010/08/08 PHP
php中return的用法实例分析
2015/02/28 PHP
浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
2015/10/26 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
JAVASCRIPT  THIS详解 面向对象
2009/03/25 Javascript
Javascript 继承实现例子
2009/08/12 Javascript
jquery入门—访问DOM对象方法
2013/01/07 Javascript
JS自调用匿名函数具体实现
2014/02/11 Javascript
兼容所有浏览器的js复制插件Zero使用介绍
2014/03/19 Javascript
JavaScript Array对象扩展indexOf()方法
2014/05/09 Javascript
jQuery中:visible选择器用法实例
2014/12/30 Javascript
获取IE浏览器Cookie信息的方法
2017/01/23 Javascript
JavaScript通过mouseover()实现图片变大效果的示例
2017/12/20 Javascript
关于vue中watch检测到不到对象属性的变化的解决方法
2018/02/08 Javascript
通过vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题
2018/04/08 Javascript
JS事件绑定的常用方式实例总结
2019/03/02 Javascript
微信小程序自定义菜单切换栏tabbar组件代码实例
2019/12/30 Javascript
如何在vue 中使用柱状图 并自修改配置
2021/01/21 Vue.js
Python最长公共子串算法实例
2015/03/07 Python
简析Python的闭包和装饰器
2016/02/26 Python
Python 两个列表的差集、并集和交集实现代码
2016/09/21 Python
CentOS 6.5下安装Python 3.5.2(与Python2并存)
2017/06/05 Python
Python操作mongodb的9个步骤
2018/06/04 Python
python整小时 整天时间戳获取算法示例
2019/02/20 Python
Python3爬虫中Selenium的用法详解
2020/07/10 Python
Web页面中八种创建多列等高(等高列布局)的实现技术
2012/12/24 HTML / CSS
优秀实习自我鉴定
2013/12/04 职场文书
社区党建工作方案
2014/06/10 职场文书
道歉的话怎么说
2015/05/12 职场文书
小兵张嘎观后感300字
2015/06/03 职场文书
教师病假条范文
2015/08/17 职场文书
2017元旦、春节期间廉洁自律承诺书
2016/03/25 职场文书
CSS3 制作精美的定价表
2021/04/06 HTML / CSS
解决Django transaction进行事务管理踩过的坑
2021/04/24 Python
mysql如何能有效防止删库跑路
2021/10/05 MySQL
python解析照片拍摄时间进行图片整理
2022/07/23 Python