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 存取 MySQL 数据库的一个例子
Oct 09 PHP
PHP header()函数常用方法总结
Apr 11 PHP
php使用类继承解决代码重复的问题
Feb 11 PHP
如何在HTML 中嵌入 PHP 代码
May 13 PHP
PHP中你应该知道的require()文件包含的正确用法
Jun 12 PHP
thinkphp跨库操作的简单代码实例
Sep 22 PHP
PHP用户管理中常用接口调用实例及解析(含源码)
Mar 09 PHP
PHP 7安装调试工具Xdebug扩展的方法教程
Jun 17 PHP
PHP各种常见经典算法总结【排序、查找、翻转等】
Aug 05 PHP
在Laravel中实现使用AJAX动态刷新部分页面
Oct 15 PHP
ThinkPHP5与单元测试PHPUnit使用详解
Feb 23 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
Feb 27 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+mysql+php+ssl服务器之完全安装攻略
2006/09/05 PHP
php&amp;java(二)
2006/10/09 PHP
基于mysql的bbs设计(三)
2006/10/09 PHP
php自动给文章加关键词链接的函数代码
2012/11/29 PHP
php类常量用法实例分析
2015/07/09 PHP
PHP给源代码加密的几种方法汇总(推荐)
2018/02/06 PHP
背景图跟随鼠标移动的Mootools插件实现代码
2011/12/12 Javascript
自定义右键属性覆盖浏览器默认右键行为实现代码
2013/02/02 Javascript
jQuery实现tab标签自动切换的方法
2015/02/28 Javascript
AngularJS服务service用法总结
2016/12/13 Javascript
详解Vue使用命令行搭建单页面应用
2017/05/24 Javascript
[02:19]DOTA2女子战队FOX视频专访:希望更多美眉一起加入
2013/10/15 DOTA
[06:11]2014DOTA2国际邀请赛 专访团结一心的VG战队
2014/07/21 DOTA
解决Python中字符串和数字拼接报错的方法
2016/10/23 Python
Python实现简单的获取图片爬虫功能示例
2017/07/12 Python
python调用百度REST API实现语音识别
2018/08/30 Python
Window 64位下python3.6.2环境搭建图文教程
2018/09/19 Python
详解python中的index函数用法
2019/08/06 Python
Python实现PyPDF2处理PDF文件的方法示例
2019/09/25 Python
小 200 行 Python 代码制作一个换脸程序
2020/05/12 Python
LightInTheBox西班牙站点:全球商品在线采购
2016/09/22 全球购物
世界上最大的网络主机公司:1&1
2016/10/12 全球购物
联想中国官方商城:Lenovo China
2017/10/18 全球购物
英国玛莎百货澳大利亚:Marks & Spencer Australia
2019/08/30 全球购物
文件中有一组整数,要求排序后输出到另一个文件中
2012/01/04 面试题
过滤器的用法
2013/10/08 面试题
大学生个人事迹材料
2014/01/21 职场文书
企业宣传口号
2014/06/12 职场文书
社团活动总结报告
2014/06/27 职场文书
计算机网络专业自荐信
2014/07/04 职场文书
小学教师节活动总结
2015/03/20 职场文书
部门优秀员工推荐信
2015/03/24 职场文书
财产分割协议书
2016/03/22 职场文书
Python3 类型标注支持操作
2021/06/02 Python
python编程简单几行代码实现视频转换Gif示例
2021/10/05 Python
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫