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 PDO中文乱码解决办法
Jul 20 PHP
phpMyAdmin链接MySql错误 个人解决方案
Dec 28 PHP
php学习笔记 面向对象的构造与析构方法
Jun 13 PHP
Zend的MVC机制使用分析(一)
May 02 PHP
PHP的preg_match匹配字符串长度问题解决方法
May 03 PHP
php+jQuery.uploadify实现文件上传教程
Dec 26 PHP
PHP代码优化技巧小结
Sep 29 PHP
详解php设置session(过期、失效、有效期)
Nov 12 PHP
PHP-CGI远程代码执行漏洞分析与防范
May 07 PHP
php魔法函数与魔法常量使用介绍
Jul 23 PHP
Laravel中正确地返回HTTP状态码方法示例
Sep 10 PHP
Thinkphp5.0 框架视图view的比较标签用法分析
Oct 12 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获取表单textarea数据中的换行问题
2010/09/10 PHP
php+ajax实时输入自动搜索匹配的方法
2014/12/26 PHP
CI框架简单邮件发送类实例
2016/05/18 PHP
PHP的静态方法与普通方法用法实例分析
2019/09/26 PHP
使用PHP开发留言板功能
2019/11/19 PHP
javascript与asp.net(c#)互相调用方法
2009/12/13 Javascript
checkbox选中与未选中判断示例
2014/08/04 Javascript
JavaScript类继承及实例化的方法
2015/07/25 Javascript
浅谈js停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)
2017/02/08 Javascript
微信小程序如何获取用户信息
2018/01/26 Javascript
浅谈FastClick 填坑及源码解析
2018/03/02 Javascript
通过 JS 判断页面是否有滚动条的实现方法
2018/04/05 Javascript
在Vue-cli里应用Vuex的state和mutations方法
2018/09/16 Javascript
详解如何提升JSON.stringify()的性能
2019/06/12 Javascript
vue cli4下环境变量和模式示例详解
2020/04/09 Javascript
JavaScript eval()函数定义及使用方法详解
2020/07/07 Javascript
使用Vant完成DatetimePicker 日期的选择器操作
2020/11/12 Javascript
Antd-vue Table组件添加Click事件,实现点击某行数据教程
2020/11/17 Javascript
[00:43]拉比克至宝魔导师密钥展示
2018/12/20 DOTA
浅谈Tensorflow模型的保存与恢复加载
2018/04/26 Python
总结Python图形用户界面和游戏开发知识点
2019/05/22 Python
django-crontab实现服务端的定时任务的示例代码
2020/02/17 Python
使用Python内置模块与函数进行不同进制的数的转换
2020/04/26 Python
了解一下python内建模块collections
2020/09/07 Python
特步官方商城:Xtep
2017/03/21 全球购物
美国体育用品在线:Modell’s Sporting Goods
2018/06/07 全球购物
英国最大的宝石首饰超市:QP Jewellers
2018/09/23 全球购物
美国糖果店:Sugarfina
2019/02/21 全球购物
环境工程专业自荐信
2014/03/03 职场文书
《桃林那间小木屋》教学反思
2014/05/01 职场文书
法定代表人授权委托书
2014/09/19 职场文书
2014年酒店服务员工作总结
2014/12/08 职场文书
世界卫生日宣传活动总结
2015/02/09 职场文书
《普罗米修斯》教学反思
2016/02/22 职场文书
奶茶店的创业计划书该怎么写?
2019/07/15 职场文书
Python import模块的缓存问题解决方案
2021/06/02 Python