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 相关文章推荐
域名查询代码公布
Oct 09 PHP
Ajax+PHP 边学边练 之二 实例
Nov 24 PHP
PHP合并两个数组的两种方式的异同
Sep 14 PHP
使用PHPExcel操作Excel用法实例分析
Mar 26 PHP
php制作的简单验证码识别代码
Jan 26 PHP
php时间函数用法分析
May 28 PHP
php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
Nov 09 PHP
php获取flash尺寸详细数据的方法
Nov 12 PHP
php微信开发之关键词回复功能
Jun 13 PHP
php使用scandir()函数扫描指定目录下所有文件示例
Jun 08 PHP
laravel实现前后台路由分离的方法
Oct 13 PHP
laravel清除视图缓存的代码
Oct 23 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
FCKeditor添加自定义按钮
2008/03/27 PHP
PHP 危险函数解释 分析
2009/04/22 PHP
php include加载文件两种方式效率比较
2010/08/08 PHP
php中的filesystem文件系统函数介绍及使用示例
2014/02/13 PHP
Yii实现自动加载类地图的方法
2015/04/01 PHP
初学prototype,发个JS接受URL参数的代码
2006/09/25 Javascript
JS代码优化技巧之通俗版(减少js体积)
2011/12/23 Javascript
js弹出的对话窗口永远保持居中显示
2012/12/15 Javascript
js设置cookie过期当前时间减去一秒相当于立即过期
2014/09/04 Javascript
JQuery zClip插件实现复制页面内容到剪贴板
2015/11/02 Javascript
javascript实现消灭星星小游戏简单版
2016/11/15 Javascript
基于jquery trigger函数无法触发a标签的两种解决方法
2018/01/06 jQuery
vue实现提示保存后退出的方法
2018/03/15 Javascript
微信小程序js文件改变参数并在视图上及时更新【推荐】
2018/06/11 Javascript
vue.js循环radio的实例
2019/11/07 Javascript
JS判断浏览器类型与操作系统的方法分析
2020/04/30 Javascript
vue如何搭建多页面多系统应用
2020/06/17 Javascript
Jquery使用each函数实现遍历及数组处理
2020/07/14 jQuery
vue中实现点击变成全屏的多种方法
2020/09/27 Javascript
[01:35]辉夜杯战队访谈宣传片—iG.V
2015/12/25 DOTA
python使用PIL缩放网络图片并保存的方法
2015/04/24 Python
python django事务transaction源码分析详解
2017/03/17 Python
详解如何使用Python编写vim插件
2017/11/28 Python
使用pyinstaller逆向.pyc文件
2019/12/20 Python
浅谈django channels 路由误导
2020/05/28 Python
python爬取网易云音乐热歌榜实例代码
2020/08/07 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
CSS3实现的炫酷菜单代码分享
2015/03/12 HTML / CSS
锐步美国官方网站:Reebok美国
2018/01/10 全球购物
小学生考试获奖感言
2014/01/30 职场文书
财务科科长岗位职责
2014/03/10 职场文书
态度决定一切演讲稿
2014/05/20 职场文书
镇副书记专题民主生活会对照检查材料思想汇报
2014/10/02 职场文书
个人总结怎么写
2015/02/26 职场文书
企业党支部工作总结2015
2015/05/21 职场文书
六一儿童节主持开场白
2015/05/28 职场文书