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利用COM对象访问SQLServer、Access
Oct 09 PHP
PHP企业级应用之常见缓存技术篇
Jan 27 PHP
PHP+MySQL投票系统的设计和实现分享
Sep 23 PHP
PHP命名空间(namespace)的动态访问及使用技巧
Aug 18 PHP
php实现读取内存顺序号
Mar 29 PHP
CodeIgniter读写分离实现方法详解
Jan 20 PHP
PHP上传图片类显示缩略图功能
Jun 30 PHP
Yii2 hasOne(), hasMany() 实现三表关联的方法(两种)
Feb 15 PHP
PHP用正则匹配form表单中所有元素的类型和属性值实例代码
Feb 28 PHP
PHP中上传文件打印错误错误类型分析
Apr 14 PHP
YII2框架中添加自定义模块的方法实例分析
Mar 18 PHP
ThinkPHP5分页paginate代码实例解析
Nov 10 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
页面利用渐进式JPEG来提升用户体验度
2014/12/01 PHP
PHP中file_exists使用中遇到的问题小结
2016/04/05 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
2018/03/02 PHP
如何实现JS函数的重载
2006/09/22 Javascript
js function使用心得
2010/05/10 Javascript
关于JavaScript中原型继承中的一点思考
2012/07/25 Javascript
解析img图片没找到onerror事件 Stack overflow at line: 0
2013/12/23 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
2015/08/27 Javascript
jQuery css() 方法动态修改CSS属性
2016/09/25 Javascript
网页挂马方式整理及详细介绍
2016/11/03 Javascript
微信小程序 网络API 上传、下载详解
2016/11/09 Javascript
Vue2递归组件实现树形菜单
2017/04/10 Javascript
js原生代码实现轮播图的实例讲解
2017/07/28 Javascript
gulp教程_从入门到项目中快速上手使用方法
2017/09/14 Javascript
使用原生js封装的ajax实例(兼容jsonp)
2017/10/12 Javascript
JS实现标签滚动切换效果
2017/12/25 Javascript
浅谈React 服务器端渲染的使用
2018/05/08 Javascript
快速解决处理后台返回json数据格式的问题
2018/08/07 Javascript
vue实现信息管理系统
2020/05/30 Javascript
vue各种事件监听实例(小结)
2020/06/24 Javascript
Python中的魔法方法深入理解
2014/07/09 Python
python关闭windows进程的方法
2015/04/18 Python
python实现的简单文本类游戏实例
2015/04/28 Python
Python访问MongoDB,并且转换成Dataframe的方法
2018/10/15 Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
2019/05/07 Python
Python+OpenCV+pyQt5录制双目摄像头视频的实例
2019/06/28 Python
django中瀑布流写法实例代码
2019/10/14 Python
北京RT科技有限公司.net工程师面试题
2013/02/15 面试题
大学专科生推荐信范文
2013/11/23 职场文书
后勤部长岗位职责
2013/12/14 职场文书
幼儿园教师工作制度
2014/01/22 职场文书
商务日语专业毕业生自荐信
2014/03/27 职场文书
学习礼仪心得体会
2014/09/01 职场文书
廉政承诺书
2015/01/19 职场文书
小学生红领巾广播稿
2015/08/19 职场文书
MySQL GTID复制的具体使用
2022/05/20 MySQL