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 相关文章推荐
5.PHP的其他功能
Oct 09 PHP
使用Xdebug调试和优化PHP程序之[1]
Apr 17 PHP
简单的移动设备检测PHP脚本代码
Feb 19 PHP
php中jQuery插件autocomplate的简单使用笔记
Jun 14 PHP
php按百分比生成缩略图的代码分享
May 10 PHP
PHP开发框架Laravel数据库操作方法总结
Sep 03 PHP
Ubuntu12下编译安装PHP5.3开发环境
Mar 27 PHP
PHP变量赋值、代入给JavaScript中的变量
Jun 29 PHP
PHP中的数组处理函数实例总结
Jan 09 PHP
功能强大的php分页函数
Jul 20 PHP
Laravel 实现密码重置功能
Feb 23 PHP
ThinkPHP5.0框架使用build 自动生成模块操作示例
Apr 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
用ODBC的分页显示
2006/10/09 PHP
php for 循环语句使用方法详细说明
2010/05/09 PHP
PHP异步调用socket实现代码
2012/01/12 PHP
PHP抓取、分析国内视频网站的视频信息工具类
2014/04/02 PHP
PHP正则替换函数preg_replace和preg_replace_callback使用总结
2014/09/22 PHP
PHP关键特性之命名空间实例详解
2017/05/06 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
PHP实现小程序批量通知推送
2018/11/27 PHP
一段多浏览器的&quot;复制到剪贴板&quot;javascript代码
2007/03/27 Javascript
使用非html5实现js板连连看游戏示例代码
2013/09/22 Javascript
基于编写jQuery的无缝滚动插件
2014/08/02 Javascript
JS实现六位字符密码输入器功能
2016/08/19 Javascript
原生Javascript和jQuery做轮播图简单例子
2016/10/11 Javascript
jquery实现图片切换代码
2016/10/13 Javascript
微信小程序实现点击返回顶层的方法
2017/07/12 Javascript
解决angular2 获取到的数据无法实时更新的问题
2018/08/31 Javascript
微信小程序webview组件交互,内联h5页面并网页实现微信支付实现解析
2019/08/16 Javascript
javascript跳转与返回和刷新页面的实例代码
2019/11/20 Javascript
[03:02]安得倚天剑,跨海斩长鲸——中国军团出征DOTA2国际邀请赛
2018/08/14 DOTA
将Django使用的数据库从MySQL迁移到PostgreSQL的教程
2015/04/11 Python
python中import学习备忘笔记
2017/01/24 Python
tensorflow输出权重值和偏差的方法
2018/02/10 Python
python中plot实现即时数据动态显示方法
2018/06/22 Python
python根据文章标题内容自动生成摘要的实例
2019/02/21 Python
利用Python实现微信找房机器人实例教程
2019/03/10 Python
Python 串口读写的实现方法
2019/06/12 Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
2019/08/24 Python
Python GUI库PyQt5样式QSS子控件介绍
2020/02/25 Python
Python 的 f-string 可以连接字符串与数字的原因解析
2021/02/20 Python
Clarks鞋澳大利亚官方网站:Clarks Australia
2019/12/25 全球购物
凌阳科技股份有限公司C++程序员面试题笔试题
2014/11/20 面试题
护理专业优质毕业生自荐书
2014/01/31 职场文书
教师师德考核自我评价
2014/09/13 职场文书
六一活动主持词
2015/06/30 职场文书
创业计划书之甜品店
2019/09/18 职场文书
教你使用vscode 搭建react-native开发环境
2021/07/07 Javascript