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中通过smtp发邮件的类,测试通过
Jan 22 PHP
php错误提示failed to open stream: HTTP request failed!的完美解决方法
Jun 06 PHP
7个超级实用的PHP代码片段
Jul 11 PHP
PHP 图片水印类代码
Aug 27 PHP
php像数组一样存取和修改字符串字符
Mar 21 PHP
php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
Jul 14 PHP
如何利用http协议发布博客园博文评论
Aug 03 PHP
thinkphp微信开之安全模式消息加密解密不成功的解决办法
Dec 02 PHP
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
Jan 09 PHP
thinkphp框架实现数据添加和显示功能
Jun 29 PHP
使用PHP免费发送定时短信的实例
Oct 24 PHP
[原创]PHPCMS遭遇会员投稿审核无效的解决方法
Jan 11 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/02/16 PHP
PHP简单获取网站百度搜索和搜狗搜索收录量的方法
2016/08/23 PHP
详解php用static方法的原因
2018/09/12 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
2020/04/26 PHP
jQuery 前的按键判断代码
2010/03/19 Javascript
用js模拟JQuery的show与hide动画函数代码
2010/09/20 Javascript
Javascript中神奇的this
2016/01/20 Javascript
EXT中单击button按钮grid添加一行(光标位置可设置)的实例代码
2016/06/02 Javascript
jQuery实现简单的tab标签页效果
2016/09/12 Javascript
谈谈对JavaScript原生拖放的深入理解
2016/09/20 Javascript
javascript的几种写法总结
2016/09/30 Javascript
详解vue.js全局组件和局部组件
2017/04/10 Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
2017/07/09 Javascript
vue采用EventBus实现跨组件通信及注意事项小结
2018/06/14 Javascript
使用nodeJS中的fs模块对文件及目录进行读写,删除,追加,等操作详解
2020/02/06 NodeJs
Python实现股市信息下载的方法
2015/06/15 Python
解决Python中字符串和数字拼接报错的方法
2016/10/23 Python
新手常见6种的python报错及解决方法
2018/03/09 Python
python抽取指定url页面的title方法
2018/05/11 Python
Python将一个CSV文件里的数据追加到另一个CSV文件的方法
2018/07/04 Python
python 多线程将大文件分开下载后在合并的实例
2018/11/09 Python
win7 x64系统中安装Scrapy的方法
2018/11/18 Python
漂亮的Django Markdown富文本app插件的实现
2019/01/02 Python
PyTorch中Tensor的拼接与拆分的实现
2019/08/18 Python
Python 使用 environs 库定义环境变量的方法
2020/02/25 Python
python GUI库图形界面开发之PyQt5开发环境配置与基础使用
2020/02/25 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
2020/12/14 Python
python实现定时发送邮件
2020/12/23 Python
使用 css3 transform 属性来变换背景图的方法
2019/05/07 HTML / CSS
数据库面试要点基本概念
2013/10/31 面试题
优秀应届生推荐信
2013/11/09 职场文书
大学英语演讲稿(中英文对照)
2014/01/14 职场文书
人事部专员岗位职责
2014/03/04 职场文书
小学一年级学生评语
2014/04/22 职场文书
中学生国旗下讲话稿
2014/04/26 职场文书
采购内勤岗位职责
2015/04/13 职场文书