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 相关文章推荐
用windows下编译过的eAccelerator for PHP 5.1.6实现php加速的使用方法
Sep 30 PHP
snoopy PHP版的网络客户端提供本地下载
Apr 15 PHP
php fsockopen中多线程问题的解决办法[翻译]
Nov 09 PHP
最新用php获取谷歌PR值算法,附上php查询PR值代码示例
Dec 25 PHP
领悟php接口中interface存在的意义
Jun 27 PHP
php仿QQ验证码的实例分析
Jul 01 PHP
php实现的发送带附件邮件类实例
Sep 22 PHP
ThinkPHP模版引擎之变量输出详解
Dec 05 PHP
php截取指定2个字符之间字符串的方法
Apr 15 PHP
PHP-FPM实现性能优化
Mar 31 PHP
基于Codeigniter框架实现的student信息系统站点动态发布功能详解
Mar 23 PHP
tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能示例
May 24 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实现比较全的数据库操作类
2015/06/18 PHP
prototype 学习笔记整理
2009/07/17 Javascript
jQuery 瀑布流 绝对定位布局(二)(延迟AJAX加载图片)
2012/05/23 Javascript
页面右下角弹出提示框示例代码js版
2013/08/02 Javascript
jQuery中bind与live的用法及区别小结
2014/01/27 Javascript
JavaScript判断是否为数字的4种方法及效率比较
2015/04/01 Javascript
JS+CSS相对定位实现的下拉菜单
2015/10/06 Javascript
Jquery中巧用Ajax的beforeSend方法
2016/01/20 Javascript
jQuery prototype冲突的2种解决方法(附demo示例下载)
2016/01/21 Javascript
js多功能分页组件layPage使用方法详解
2016/05/19 Javascript
javascript中json对象json数组json字符串互转及取值方法
2017/04/19 Javascript
ReactNative页面跳转Navigator实现的示例代码
2017/08/02 Javascript
BootStrap Fileinput插件和Bootstrap table表格插件相结合实现文件上传、预览、提交的导入Excel数据操作步骤
2017/08/07 Javascript
基于JavaScript实现一个简单的Vue
2018/09/26 Javascript
Vue中的vue-resource示例详解
2018/11/02 Javascript
微信小程序实现拖拽功能
2019/09/26 Javascript
jQuery实现颜色打字机的完整代码
2020/03/19 jQuery
如何使用vue slot创建一个模态框的实例代码
2020/05/24 Javascript
为Python程序添加图形化界面的教程
2015/04/29 Python
Python找出文件中使用率最高的汉字实例详解
2015/06/03 Python
python多维数组切片方法
2018/04/13 Python
Selenium chrome配置代理Python版的方法
2018/11/29 Python
对Python实现累加函数的方法详解
2019/01/23 Python
python用opencv批量截取图像指定区域的方法
2019/01/24 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
canvas实现有递增动画的环形进度条的实现方法
2019/07/10 HTML / CSS
Fossil加拿大官网:化石手表、手袋、首饰及配饰
2019/04/23 全球购物
护理专业应届毕业生推荐信
2013/11/15 职场文书
小露珠教学反思
2014/04/30 职场文书
四查四看整改措施
2014/09/19 职场文书
检察院院长群众路线教育实践活动个人整改措施
2014/10/04 职场文书
生产现场禁烟通知
2015/04/23 职场文书
离婚起诉书怎么写
2015/05/19 职场文书
大学自主招生自荐信(2016精选篇)
2016/01/28 职场文书
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
2021/04/12 Python
AJAX学习笔记
2021/05/18 Javascript