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 相关文章推荐
Wordpress php 分页代码
Oct 21 PHP
php url地址栏传中文乱码解决方法集合
Jun 25 PHP
对text数据类型不支持代码页转换 从: 1252 到: 936
Apr 23 PHP
PHP中如何判断AJAX提交的数据
Feb 05 PHP
单点登录 Ucenter示例分析
Oct 29 PHP
Thinkphp中的volist标签用法简介
Jun 18 PHP
php中JSON的使用方法
Apr 30 PHP
老生常谈文本文件和二进制文件的区别
Feb 27 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
Sep 07 PHP
PHP创建文件及写入数据(覆盖写入,追加写入)的方法详解
Feb 15 PHP
phpStorm+XDebug+chrome 配置详解
Apr 01 PHP
PHP解密支付宝小程序的加密数据、手机号的示例代码
Feb 26 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
PHPUnit PHP测试框架安装方法
2011/03/23 PHP
Laravel 5 学习笔记
2015/03/06 PHP
php通过排列组合实现1到9数字相加都等于20的方法
2015/08/03 PHP
Zend Framework开发入门经典教程
2016/03/23 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
thinkPHP5框架中widget的功能与用法详解
2018/06/11 PHP
php字符串函数 str类常见用法示例
2020/05/15 PHP
Grid得到选择行数据的方法总结
2011/01/17 Javascript
js多级树形弹出一个小窗口层(非常好用)实例代码
2013/03/19 Javascript
JavaScript函数柯里化原理与用法分析
2017/03/31 Javascript
Angularjs 与 bower安装和使用详解
2017/05/11 Javascript
js数组去重的N种方法(小结)
2018/06/07 Javascript
解决Vue2.0中使用less给元素添加背景图片出现的问题
2018/09/03 Javascript
vue学习笔记五:在vue项目里面使用引入公共方法详解
2019/04/04 Javascript
Vue extend的基本用法(实例详解)
2019/12/09 Javascript
ES6学习笔记之字符串、数组、对象、函数新增知识点实例分析
2020/01/22 Javascript
vue打包通过image-webpack-loader插件对图片压缩优化操作
2020/11/12 Javascript
django 实现编写控制登录和访问权限控制的中间件方法
2019/01/15 Python
python实现视频分帧效果
2019/05/31 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
2019/06/12 Python
Django admin禁用编辑链接和添加删除操作详解
2019/11/15 Python
Scrapy框架实现的登录网站操作示例
2020/02/06 Python
python 使用OpenCV进行简单的人像分割与合成
2021/02/02 Python
John Hardy官方网站:手工设计首饰的奢侈品牌
2017/07/05 全球购物
英国领先品牌手动工具和电动工具供应商:Tooled Up
2018/11/24 全球购物
银行实习的自我鉴定
2013/12/10 职场文书
应届毕业生自我鉴定范文
2013/12/27 职场文书
遗产继承公证书
2014/04/09 职场文书
大学生英语演讲稿
2014/04/24 职场文书
教师批评与自我批评(群众路线)
2014/10/15 职场文书
医院员工辞职信范文
2015/05/12 职场文书
2015年小学实验室工作总结
2015/07/28 职场文书
详解如何在Canvas中添加事件的方法
2021/04/17 Javascript
springBoot基于webSocket实现扫码登录
2021/06/22 Java/Android
python unittest单元测试的步骤分析
2021/08/02 Python
vue-cli3.x配置全局的scss的时候报错问题及解决
2022/04/30 Vue.js