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 相关文章推荐
常用表单验证类,有了这个,一般的验证就都齐了。
Dec 06 PHP
一个好用的PHP验证码类实例分享
Dec 27 PHP
php实现的替换敏感字符串类实例
Sep 22 PHP
PHP将HTML转换成文本的实现代码
Jan 21 PHP
深入剖析浏览器退出之后php还会继续执行么
May 17 PHP
PHP二维数组矩形转置实例
Jul 20 PHP
thinkphp中AJAX返回ajaxReturn()方法分析
Dec 06 PHP
php PDO判断连接是否可用的实现方法
Apr 03 PHP
php类自动装载、链式操作、魔术方法实现代码
Jul 23 PHP
Laravel框架中集成MongoDB和使用详解
Oct 17 PHP
laravel 5.5 关闭token的3种实现方式
Oct 24 PHP
YII2框架中actions的作用与使用方法示例
Mar 13 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连接mssql:pdo odbc sql server
2011/07/20 PHP
PHP自动重命名文件实现方法
2014/11/04 PHP
学习PHP的数组总结【经验】
2016/05/05 PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
2016/09/23 PHP
php获取数据库结果集方法(推荐)
2017/06/01 PHP
详解提高使用Java反射的效率方法
2019/04/29 PHP
javascript 异常处理使用总结
2009/06/21 Javascript
js语法学习之判断一个对象是否为数组
2014/05/13 Javascript
javascript动态创建链接的方法
2015/05/13 Javascript
jQuery插件之Tocify动态节点目录菜单生成器附源码下载
2016/01/08 Javascript
ES6所改良的javascript“缺陷”问题
2016/08/23 Javascript
Vue.js 2.0 和 React、Augular等其他前端框架大比拼
2016/10/08 Javascript
String字符串截取的四种方式总结
2016/11/28 Javascript
Bootstrap 手风琴菜单的实现代码
2017/01/20 Javascript
vue的无缝滚动组件vue-seamless-scroll实例
2017/12/18 Javascript
vue 做移动端微信公众号采坑经验记录
2018/04/26 Javascript
JavaScript常见JSON操作实例分析
2018/08/08 Javascript
详解如何更好的使用module vuex
2019/03/27 Javascript
[03:49]显微镜下的DOTA2第十五期—VG登基之路完美团
2014/06/24 DOTA
[01:21]2018DOTA2亚洲邀请赛4.5采访 打DOTA2也能有女朋友?
2018/04/06 DOTA
讲解python参数和作用域的使用
2013/11/01 Python
利用Opencv中Houghline方法实现直线检测
2018/02/11 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
2018/04/21 Python
Python实现KNN(K-近邻)算法的示例代码
2019/03/05 Python
python在地图上画比例的实例详解
2020/11/13 Python
对pytorch中x = x.view(x.size(0), -1) 的理解说明
2021/03/03 Python
HTML5仿手机微信聊天界面
2016/03/18 HTML / CSS
伦敦剧院门票:From The Box Office
2018/06/30 全球购物
全球最大的瓷器、水晶和银器零售商:Replacements
2020/06/15 全球购物
电力公司个人求职信范文
2014/02/04 职场文书
购房意向书
2014/08/30 职场文书
2015年大学团支部工作总结
2015/05/13 职场文书
医者仁心观后感
2015/06/17 职场文书
2015小学毕业班工作总结
2015/07/21 职场文书
用Python将库打包发布到pypi
2021/04/13 Python
Mongodb 迁移数据块的流程介绍分析
2022/04/18 MongoDB