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实现utf-8和GB2312编码相互转换函数代码
Feb 07 PHP
php读取csv实现csv文件下载功能
Dec 18 PHP
PHP实现返回JSON和XML的类分享
Jan 28 PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
Mar 15 PHP
比较完整的微信开发php代码
Aug 02 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
Jul 03 PHP
PHP删除字符串中非字母数字字符方法总结
Jan 20 PHP
PHP PDOStatement::fetchObject讲解
Feb 01 PHP
PHP递归的三种常用方式
Feb 28 PHP
php fread函数使用方法总结
May 28 PHP
PHP设计模式之数据访问对象模式(DAO)原理与用法实例分析
Dec 12 PHP
laravel框架实现为 Blade 模板引擎添加新文件扩展名操作示例
Jan 25 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.ini实现Mysql导入数据库文件最大限制的修改方法
2007/12/11 PHP
php提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
2011/02/08 PHP
PHP的Yii框架中过滤器相关的使用总结
2016/03/29 PHP
PHP模板引擎Smarty自定义变量调解器用法
2016/04/11 PHP
PHP环境搭建的详细步骤
2016/06/30 PHP
Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法
2016/07/02 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
2016/07/08 PHP
Event altKey,ctrlKey,shiftKey属性解析
2013/12/18 Javascript
JavaScript基础函数整理汇总
2015/01/30 Javascript
详解JavaScript中数组和字符串的lastIndexOf()方法使用
2016/03/13 Javascript
微信小程序之小豆瓣图书实例
2016/11/30 Javascript
JS基于onclick事件实现单个按钮的编辑与保存功能示例
2017/02/13 Javascript
Vue之Watcher源码解析(2)
2017/07/19 Javascript
自己动手封装一个React Native多级联动
2018/09/19 Javascript
JQuery搜索框自动补全(模糊匹配)功能实现示例
2019/01/08 jQuery
js中Array对象的常用遍历方法详解
2019/01/17 Javascript
vue自动路由-单页面项目(非build时构建)
2019/04/30 Javascript
微信小程序select下拉框实现效果
2019/05/15 Javascript
Jquery实现获取子元素的方法分析
2019/08/24 jQuery
通过实例了解Javascript柯里化流程
2020/03/03 Javascript
尝试使用Python多线程抓取代理服务器IP地址的示例
2015/11/09 Python
简单的python后台管理程序
2017/04/13 Python
Python网络编程详解
2017/10/31 Python
python 把文件中的每一行以数组的元素放入数组中的方法
2018/04/29 Python
对Python字符串中的换行符和制表符介绍
2018/05/03 Python
python读取txt文件并取其某一列数据的示例
2019/02/19 Python
python交易记录链的实现过程详解
2019/07/03 Python
Python 函数用法简单示例【定义、参数、返回值、函数嵌套】
2019/09/20 Python
TENSORFLOW变量作用域(VARIABLE SCOPE)
2020/01/10 Python
Python API 操作Hadoop hdfs详解
2020/06/06 Python
python中 _、__、__xx__()区别及使用场景
2020/06/30 Python
css3制作彩色边线3d立体按钮的示例(css3按钮)
2014/05/06 HTML / CSS
Subside Sports德国:足球球衣和球迷商品
2019/06/08 全球购物
测量实习生自我鉴定
2013/09/19 职场文书
统计工作个人总结
2015/03/03 职场文书
2015年秋季运动会加油稿
2015/07/22 职场文书