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中处理模拟rewrite 效果
Dec 09 PHP
PHP SQLite类
May 07 PHP
PHP 多维数组排序实现代码
Aug 05 PHP
PHP set_time_limit(0)长连接的实现分析
Mar 02 PHP
QueryPath PHP 中的jQuery
Apr 11 PHP
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
Feb 06 PHP
php使用curl存储cookie的示例
Mar 31 PHP
WordPress中邮件的一些修改和自定义技巧
Dec 15 PHP
thinkphp项目部署到Linux服务器上报错“模板不存在”如何解决
Apr 27 PHP
PHP基本语法实例总结
Sep 09 PHP
PHP PDOStatement::fetchAll讲解
Jan 31 PHP
laravel5.6实现数值转换
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
用Apache反向代理设置对外的WWW和文件服务器
2006/10/09 PHP
php 论坛采集程序 模拟登陆,抓取页面 实现代码
2009/07/09 PHP
php缓存技术详细总结
2013/08/07 PHP
PHP中使用TCPDF生成PDF文档实例
2014/07/01 PHP
常用PHP框架功能对照表
2014/10/23 PHP
PHP对文件进行加锁、解锁实例
2015/01/23 PHP
PHP中你应该知道的require()文件包含的正确用法
2015/06/12 PHP
Thinkphp+smarty+uploadify实现无刷新上传
2015/07/30 PHP
PHP自定义函数格式化json数据示例
2016/09/14 PHP
让插入到 innerHTML 中的 script 跑起来的实现代码
2006/07/01 Javascript
javascript一点特殊用法
2008/05/28 Javascript
JavaScript中出现乱码的处理心得
2009/12/24 Javascript
6个DIV 135或246间隔一秒轮番显示效果
2010/07/24 Javascript
非html5实现js版弹球游戏示例代码
2013/09/22 Javascript
JQuery与JS里submit()的区别示例介绍
2014/02/17 Javascript
javascript实现的网站访问量统计代码
2015/12/20 Javascript
利用PM2部署node.js项目的方法教程
2017/05/10 Javascript
利用jsonp解决js读取本地json跨域的问题
2018/12/11 Javascript
微信小程序实现pdf、word等格式文件上传的方法
2019/09/10 Javascript
解决iView Table组件宽度只变大不变小的问题
2020/11/13 Javascript
Python中的文件和目录操作实现代码
2011/03/13 Python
pip 错误unused-command-line-argument-hard-error-in-future解决办法
2014/06/01 Python
学习python的前途 python挣钱
2019/02/27 Python
Jacobi迭代算法的Python实现详解
2019/06/29 Python
中英双版中文教师求职信
2013/10/27 职场文书
小区消防演习方案
2014/02/21 职场文书
环保建议书
2014/03/12 职场文书
老师对学生的评语
2014/04/18 职场文书
企业人事任命书
2014/06/05 职场文书
高速铁道技术专业求职信
2014/08/09 职场文书
安全生产月标语
2014/10/07 职场文书
2015年世界粮食日演讲稿
2015/03/20 职场文书
幼儿园教师师德承诺书
2015/04/28 职场文书
2016年清明节红领巾广播稿
2015/12/17 职场文书
Python数据分析之pandas函数详解
2021/04/21 Python
Java使用Unsafe类的示例详解
2021/09/25 Java/Android