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 相关文章推荐
浅谈Windows下 PHP4.0与oracle 8的连接设置
Oct 09 PHP
dedecms中常见问题修改方法总结
Mar 21 PHP
黑夜路人出的几道php笔试题
Aug 04 PHP
PHP学习笔记 (1) 环境配置与代码调试
Jun 19 PHP
php addslashes及其他清除空格的方法是不安全的
Jan 25 PHP
php中利用str_pad函数生成数字递增形式的产品编号
Sep 30 PHP
PHP自动重命名文件实现方法
Nov 04 PHP
thinkPHP查询方式小结
Jan 09 PHP
PHP使用http_build_query()构造URL字符串的方法
Apr 02 PHP
详解PHP实现定时任务的五种方法
Jul 25 PHP
php生成网页桌面快捷方式
May 05 PHP
PhpStorm2020 + phpstudyV8 +XDebug的教程详解
Sep 17 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
使用adodb lite解决问题
2006/12/31 PHP
php反射应用示例
2014/02/25 PHP
php实例分享之通过递归实现删除目录下的所有文件详解
2014/05/15 PHP
用php守护另一个php进程的例子
2015/02/13 PHP
PHP程序中使用adodb连接不同数据库的代码实例
2015/12/19 PHP
php编程每天必学之表单验证
2016/03/01 PHP
thinkPHP实现的省市区三级联动功能示例
2017/05/05 PHP
js form 验证函数 当前比较流行的错误提示
2009/06/23 Javascript
兼容IE和FF的图片上传前预览js代码
2013/05/28 Javascript
深入分析jquery解析json数据
2014/12/09 Javascript
利用JavaScript脚本实现滚屏效果的方法
2015/07/07 Javascript
javascript的replace方法结合正则使用实例总结
2016/06/16 Javascript
Vue+element 解决浏览器自动填充记住的账号密码问题
2019/06/11 Javascript
vue实现自定义H5视频播放器的方法步骤
2019/07/01 Javascript
vue学习笔记之slot插槽基本用法实例分析
2020/02/01 Javascript
JavaScript进阶(一)变量声明提升实例分析
2020/05/09 Javascript
Python2.x中文乱码问题解决方法
2015/06/02 Python
Python  pip安装lxml出错的问题解决办法
2017/02/10 Python
python逐行读写txt文件的实例讲解
2018/04/03 Python
基于Django框架利用Ajax实现点赞功能实例代码
2018/08/19 Python
python实现中文文本分句的例子
2019/07/15 Python
Python使用pdb调试代码的技巧
2020/05/03 Python
python时间time模块处理大全
2020/10/25 Python
Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
2020/12/07 Python
英国马莎百货印度官网:Marks & Spencer印度
2020/10/08 全球购物
优秀志愿者事迹材料
2014/02/03 职场文书
中班开学寄语
2014/04/04 职场文书
师德师风自我剖析材料
2014/09/27 职场文书
机电专业毕业生自我鉴定2014
2014/10/04 职场文书
群众路线教育实践活动自我剖析思想汇报
2014/10/04 职场文书
机关作风整顿个人剖析材料
2014/10/06 职场文书
2014年纳税评估工作总结
2014/12/23 职场文书
《钢铁是怎样炼成的》高中读后感
2019/08/07 职场文书
Linux安装Nginx步骤详解
2021/03/31 Servers
MySQL数据库安装方法与图形化管理工具介绍
2022/05/30 MySQL
CSS SandBox应用场景及常见问题
2022/06/25 HTML / CSS