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 闭包特性在实际应用中的问题
Oct 30 PHP
PHPMYADMIN 简明安装教程 推荐
Mar 07 PHP
PHP XML数据解析代码
May 26 PHP
PHP实现自动识别Restful API的返回内容类型
Feb 07 PHP
php查看当前Session的ID实例
Mar 16 PHP
PHP接收json 并将接收数据插入数据库的实现代码
Dec 01 PHP
WordPress中创建用户角色的相关PHP函数使用详解
Dec 25 PHP
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
May 06 PHP
Laravel搭建后台登录系统步骤详解
Jul 26 PHP
Mac版PhpStorm之XAMPP整合apache服务器配置的图文教程详解
Oct 13 PHP
PHP读取word文档的方法分析【基于COM组件】
Aug 01 PHP
PHP 爬取网页的主要方法
Jul 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的curl实现get,post和cookie(实例介绍)
2013/06/17 PHP
php修改指定文件后缀的方法
2014/09/11 PHP
CI(Codeigniter)的Setting增强配置类实例
2016/01/06 PHP
thinkphp3.2同时连接两个数据库的简单方法
2019/08/13 PHP
js 匿名调用实现代码
2009/06/19 Javascript
Extjs TriggerField在弹出窗口显示不出问题的解决方法
2010/01/08 Javascript
JavaScript关于select的相关操作说明
2010/01/13 Javascript
原生javascript实现图片轮播效果代码
2010/09/03 Javascript
基于jquery的用鼠标画出可移动的div
2012/09/06 Javascript
jquery获取被勾选的checked(选中)的那一行的3列和4列的值
2013/07/04 Javascript
jQuery 2.0.3 源码分析之core(一)整体架构
2014/05/27 Javascript
jQuery实现的多张图无缝滚动效果【测试可用】
2016/09/12 Javascript
Vue组件BootPage实现简单的分页功能
2016/09/12 Javascript
原生node.js案例--前后台交互
2017/02/20 Javascript
ES6学习笔记之Set和Map数据结构详解
2017/04/07 Javascript
JS实现带导航城市列表以及输入搜索功能
2018/01/04 Javascript
详解vue beforeRouteEnter 异步获取数据给实例问题
2019/08/09 Javascript
微信小程序开发之map地图组件定位并手动修改位置偏差
2019/08/17 Javascript
Vue最新防抖方案(必看篇)
2019/10/30 Javascript
python代码实现ID3决策树算法
2017/12/20 Python
python爬虫获取百度首页内容教学
2018/12/23 Python
python tkinter canvas使用实例
2019/11/04 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
2020/03/03 Python
Python 解决火狐浏览器不弹出下载框直接下载的问题
2020/03/09 Python
python 爬虫请求模块requests详解
2020/12/04 Python
HTML5新标签兼容——&gt; 的两种方法
2018/09/12 HTML / CSS
英国领先的葡萄酒专家:Majestic Wine
2017/05/30 全球购物
英国现代、当代和设计师家具店:Furntastic
2020/07/18 全球购物
大学自我评价
2014/02/12 职场文书
教师远程培训感言
2014/03/06 职场文书
鼋头渚导游词
2015/02/05 职场文书
2015年音乐教师个人工作总结
2015/05/20 职场文书
公司保洁员管理制度
2015/08/04 职场文书
自书遗嘱范文
2015/08/07 职场文书
优秀毕业生主要事迹材料
2015/11/04 职场文书
pytorch交叉熵损失函数的weight参数的使用
2021/05/24 Python