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字符转义相关函数小结(php下的转义字符串)
Apr 12 PHP
常用的php ADODB使用方法集锦
Mar 25 PHP
关于php连接mssql:pdo odbc sql server
Jul 20 PHP
在WINDOWS中设置计划任务执行PHP文件的方法
Dec 19 PHP
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
Sep 30 PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
Mar 03 PHP
Yii2表单事件之Ajax提交实现方法
May 04 PHP
php实现的错误处理封装类实例
Jun 20 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
Mar 24 PHP
thinkphp5.1 框架导入/导出excel文件操作示例
May 25 PHP
实例讲解PHP表单
Jun 10 PHP
php实现统计IP数及在线人数的示例代码
Jul 22 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中设置index.php文件为只读的方法
2013/02/06 PHP
PHP迭代器的内部执行过程详解
2013/11/12 PHP
PHP空值检测函数与方法汇总
2017/11/19 PHP
PHP命令空间namespace及use的用法小结
2017/11/27 PHP
PHP获取二叉树镜像的方法
2018/01/17 PHP
PHP实现cookie跨域session共享的方法分析
2019/08/23 PHP
七个很有意思的PHP函数
2014/05/12 Javascript
自定义jquery模态窗口插件无法在顶层窗口显示问题
2014/05/29 Javascript
jQuery学习笔记之 Ajax操作篇(二) - 数据传递
2014/06/23 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
js+cookies实现悬浮购物车的方法
2015/05/25 Javascript
JQuery插入DOM节点的方法
2015/06/11 Javascript
javascript字符串替换函数如何一次性全部替换掉
2015/10/30 Javascript
Kindeditor在线文本编辑器如何过滤HTML
2016/04/14 Javascript
AngularJs Scope详解及示例代码
2016/09/01 Javascript
DOM事件探秘篇
2017/02/15 Javascript
Vue.js数据绑定之data属性
2017/07/07 Javascript
jQuery实现获取动态添加的标签对象示例
2018/06/28 jQuery
JS Object.preventExtensions(),Object.seal()与Object.freeze()用法实例分析
2018/08/25 Javascript
vue开发拖拽进度条滑动组件
2019/09/21 Javascript
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
2021/01/28 Javascript
[02:25]专访DOTA2负责人Erik 国际邀请赛暂不会离开西雅
2014/07/21 DOTA
[03:36]DOTA2完美大师赛coL战队趣味视频——我演你猜
2017/11/23 DOTA
Python中的filter()函数的用法
2015/04/27 Python
Python计算已经过去多少个周末的方法
2015/07/25 Python
pyqt5 实现 下拉菜单 + 打开文件的示例代码
2019/06/20 Python
Python随机函数库random的使用方法详解
2019/08/21 Python
Pytorch使用MNIST数据集实现CGAN和生成指定的数字方式
2020/01/10 Python
pytorch简介
2020/11/11 Python
俄罗斯化妆品和香水网上商店:Iledebeaute
2019/01/03 全球购物
shell程序中如何注释
2012/02/17 面试题
小加工厂管理制度
2014/01/21 职场文书
市场部管理制度
2014/02/02 职场文书
大学毕业感言50字
2014/02/07 职场文书
技能比赛获奖感言
2014/02/14 职场文书
HTML+CSS实现导航条下拉菜单的示例代码
2021/08/02 HTML / CSS