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学习之数组值的操作
Apr 17 PHP
PHP判断搜索引擎蜘蛛并自动记忆到文件的代码
Feb 04 PHP
PHP文件注释标记及规范小结
Apr 01 PHP
PHP编码转换函数 自动转换字符集支持数组转换
Dec 16 PHP
php 地区分类排序算法
Jul 01 PHP
php中jpgraph类库的使用介绍
Aug 08 PHP
php接口和抽象类使用示例详解
Mar 02 PHP
destoon出现验证码不显示时的紧急处理方法
Aug 22 PHP
PHP调用MySQL存储过程并返回值的方法
Dec 26 PHP
php对象和数组相互转换的方法
May 12 PHP
php实现转换ubb代码的方法
Jun 18 PHP
PHP实现类似题库抽题效果
Aug 16 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 和 XML: 使用expat函数(三)
2006/10/09 PHP
ThinkPHP在新浪SAE平台的部署实例
2014/10/31 PHP
laravel框架关于搜索功能的实现
2018/03/15 PHP
PHP删除数组中特定元素的两种方法
2019/02/28 PHP
利用JQuery为搜索栏增加tag提示
2009/06/22 Javascript
方便实用的jQuery checkbox复选框全选功能简单实例
2013/10/09 Javascript
jQuery实现列表自动滚动循环滚动展示新闻
2014/08/22 Javascript
javascript实现英文首字母大写
2015/04/23 Javascript
jQuery实现类似淘宝网图片放大效果的方法
2015/07/08 Javascript
基于jQuery实现放大镜特效
2020/10/19 Javascript
Bootstrap和Angularjs配合自制弹框的实例代码
2016/08/24 Javascript
jQuery表单对象属性过滤选择器实例详解
2016/09/13 Javascript
JavaScript九九乘法口诀表的简单实现
2016/10/04 Javascript
jQuery扩展+xml实现表单验证功能的方法
2016/12/25 Javascript
vue的常用组件操作方法应用分析
2018/04/13 Javascript
JS学习笔记之贪吃蛇小游戏demo实例详解
2019/05/29 Javascript
详解Vue3中对VDOM的改进
2020/04/23 Javascript
ES6 async、await的基本使用方法示例
2020/06/06 Javascript
[00:27]DOTA2荣耀之路2:Patience from zhou!
2018/05/24 DOTA
Python3实现的画图及加载图片动画效果示例
2018/01/19 Python
Python爬虫之正则表达式的使用教程详解
2018/10/25 Python
Python中如何使用if语句处理列表实例代码
2019/02/24 Python
Python字符串的常见操作实例小结
2019/04/08 Python
Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
2020/12/07 Python
CSS3点击按钮实现背景渐变动画效果
2016/10/19 HTML / CSS
Html5监听手机摇一摇事件的实现
2019/11/07 HTML / CSS
英国最大的婴儿监视器网上商店:Baby Monitors Direct
2018/04/24 全球购物
英国玛莎百货澳大利亚:Marks & Spencer Australia
2019/08/30 全球购物
应聘护士自荐信
2013/10/21 职场文书
护理工作感言
2014/01/16 职场文书
小学生植树节活动总结
2014/07/04 职场文书
教师自我剖析材料(群众路线)
2014/09/29 职场文书
2014年教研工作总结
2014/12/06 职场文书
先进基层党组织材料
2014/12/25 职场文书
单身证明范本
2015/06/15 职场文书
浅谈golang 中time.After释放的问题
2021/05/05 Golang