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 相关文章推荐
自己动手做一个SQL解释器
Oct 09 PHP
用PHP的ob_start();控制您的浏览器cache!
Feb 14 PHP
第七章 php自定义函数实现代码
Dec 30 PHP
详解WordPress开发中过滤属性以及Sql语句的函数使用
Dec 25 PHP
php结合ajax实现手机发红包的案例
Oct 13 PHP
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
Dec 12 PHP
php实时倒计时功能实现方法详解
Feb 27 PHP
php 类中的常量、静态属性、非静态属性的区别
Apr 09 PHP
PHP实现微信图片上传到服务器的方法示例
Jun 29 PHP
在laravel中实现将查询的对象转换为多维数组的函数
Oct 21 PHP
laravel excel 上传文件保存到本地服务器功能
Nov 14 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
Apr 04 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
将二维数组转为一维数组的2种方法
2014/05/26 PHP
PHP 中提示undefined index如何解决(多种方法)
2016/03/16 PHP
laravel 修改.htaccess文件 重定向public的解决方法
2019/10/12 PHP
初学js 新节点的创建 删除 的步骤
2011/07/04 Javascript
jQuery-onload让第一次页面加载时图片是淡入方式显示
2012/05/23 Javascript
Javascript代码在页面加载时的执行顺序介绍
2013/05/03 Javascript
javascript进行数组追加方法小结
2014/06/16 Javascript
深入理解JavaScript编程中的原型概念
2015/06/25 Javascript
jQuery实现的简洁下拉菜单导航效果代码
2015/08/26 Javascript
jQuery中hover与mouseover和mouseout的区别分析
2015/12/24 Javascript
Jquery表单验证失败后不提交的解决方法
2016/10/18 Javascript
Vue.js展示AJAX数据简单示例讲解
2017/03/29 Javascript
jquery+css实现侧边导航栏效果
2017/06/12 jQuery
jQuery Ajax 实现分页 kkpager插件实例代码
2017/08/10 jQuery
vue给input file绑定函数获取当前上传的对象完美实现方法
2017/12/15 Javascript
JS实现根据指定值删除数组中的元素操作示例
2018/08/02 Javascript
详解JavaScript原生封装ajax请求和Jquery中的ajax请求
2019/02/14 jQuery
vue中格式化时间过滤器代码实例
2019/04/17 Javascript
jquery图片预览插件实现方法详解
2019/07/18 jQuery
[59:08]Ti4 冒泡赛第二天 NEWBEE vs Titan 2
2014/07/15 DOTA
Django框架模板的使用方法示例
2019/05/25 Python
Django框架orM与自定义SQL语句混合事务控制操作
2019/06/27 Python
pytorch中的自定义数据处理详解
2020/01/06 Python
使用Python第三方库pygame写个贪吃蛇小游戏
2020/03/06 Python
Python类中的装饰器在当前类中的声明与调用详解
2020/04/15 Python
基于HTML5超酷摄像头(HTML5 webcam)拍照功能实现代码
2012/12/13 HTML / CSS
Mountain Warehouse澳大利亚官网:欧洲家庭户外品牌倡导者
2016/11/20 全球购物
BookOutlet加拿大:在网上书店购买廉价折扣图书和小说
2018/10/05 全球购物
养牛场项目建议书
2014/05/13 职场文书
企业文化标语大全
2014/06/10 职场文书
岗位说明书怎么写
2014/07/30 职场文书
销售经理岗位职责
2015/01/31 职场文书
2015年党员个人自我评价
2015/03/03 职场文书
工厂仓管员岗位职责
2015/04/01 职场文书
IDEA 链接Mysql数据库并执行查询操作的完整代码
2021/05/20 MySQL
Java设计模式之享元模式示例详解
2022/03/03 Java/Android