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 相关文章推荐
教你IIS6的PHP最佳配置方法
Sep 05 PHP
php数组函数序列之array_pop() - 删除数组中的最后一个元素
Nov 07 PHP
如何阻止网站被恶意反向代理访问(防网站镜像)
Mar 18 PHP
PHP引用(&amp;)各种使用方法实例详解
Mar 20 PHP
推荐几个开源的微信开发项目
Dec 28 PHP
php实现字符串翻转的方法
Mar 27 PHP
PHP中的数组处理函数实例总结
Jan 09 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
May 11 PHP
详解WordPress中添加友情链接的方法
May 21 PHP
php 使用fopen函数创建、打开文件详解及实例代码
Sep 24 PHP
php版微信返回用户text输入的方法
Nov 14 PHP
PHP基于递归实现的约瑟夫环算法示例
Aug 27 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
剧场版动画《PSYCHO-PASS 3 FIRST INSPECTOR》3月27日日本上映!
2020/03/06 日漫
把从SQL中取出的数据转化成XMl格式
2006/10/09 PHP
PHP Socket 编程
2010/04/09 PHP
PHP 类商品秒杀计时实现代码
2010/05/05 PHP
php上传apk后自动提取apk包信息的使用(示例下载)
2013/04/26 PHP
zend framework框架中url大小写问题解决方法
2014/08/19 PHP
最新制作ThinkPHP3.2.3完全开发手册
2015/11/23 PHP
浅析PHP7的多进程及实例源码
2019/04/14 PHP
PHP实现微信提现(企业付款到零钱)
2019/08/01 PHP
Javascript 面向对象 命名空间
2010/05/13 Javascript
设为首页加入收藏兼容360/火狐/谷歌/IE等主流浏览器的代码
2013/03/26 Javascript
js中for in的用法示例解析
2013/12/25 Javascript
浅谈JSON和JSONP区别及jQuery的ajax jsonp的使用
2014/11/23 Javascript
chrome调试javascript详解
2015/10/21 Javascript
浅谈angular4生命周期钩子
2017/09/05 Javascript
24行JavaScript代码实现Redux的方法实例
2019/11/17 Javascript
详解webpack的clean-webpack-plugin插件报错
2020/10/16 Javascript
Python中的Descriptor描述符学习教程
2016/06/02 Python
python自动12306抢票软件实现代码
2018/02/24 Python
python提取图像的名字*.jpg到txt文本的方法
2018/05/10 Python
python 处理数字,把大于上限的数字置零实现方法
2019/01/28 Python
matplotlib 多个图像共用一个colorbar的实现示例
2020/09/10 Python
基于python的opencv图像处理实现对斑马线的检测示例
2020/11/29 Python
利用HTML5中的Canvas绘制一张笑脸的教程
2015/05/07 HTML / CSS
工业设计专业推荐信
2013/10/29 职场文书
寒假实习自荐信
2014/01/26 职场文书
学校课外活动总结
2014/05/08 职场文书
小学安全工作汇报材料
2014/08/19 职场文书
公司试用期员工自我评价
2014/09/17 职场文书
党员评议自我评价
2015/03/03 职场文书
2015年中秋节活动总结
2015/03/23 职场文书
爱国主义电影观后感
2015/06/18 职场文书
初中团委工作总结
2015/08/13 职场文书
Python基础之数据类型知识汇总
2021/05/18 Python
详解分布式系统中如何用python实现Paxos
2021/05/18 Python
nginx 配置缓存
2022/05/11 Servers