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的ASP防火墙
Oct 09 PHP
深入php之规范编程命名小结
May 15 PHP
PHP APC配置文件2套和参数详解
Jun 11 PHP
php开启与关闭错误提示适用于没有修改php.ini的权限
Oct 16 PHP
php时间戳格式化显示友好的时间函数分享
Oct 21 PHP
Yii配置文件用法详解
Dec 04 PHP
php+resumablejs实现的分块上传 断点续传功能示例
Apr 18 PHP
php实现的生成迷宫与迷宫寻址算法完整实例
Nov 06 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
Oct 14 PHP
Laravel定时任务的每秒执行代码
Oct 22 PHP
PHP中关于php.ini参数优化详解
Feb 28 PHP
如何解决php-fpm启动不了问题
Nov 17 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
Mac版PhpStorm之XAMPP整合apache服务器配置的图文教程详解
2016/10/13 PHP
php 截取utf-8格式的字符串实例代码
2016/10/30 PHP
PHP实现的杨辉三角求解算法分析
2019/03/11 PHP
laravel Model 执行事务的实现
2019/10/10 PHP
javascript中关于执行环境的杂谈
2011/08/14 Javascript
javascript简单实现图片预加载
2014/12/03 Javascript
基于jquery实现的自动补全功能
2015/03/12 Javascript
浏览器中url存储的JavaScript实现
2015/07/07 Javascript
jquery pagination分页插件使用详解(后台struts2)
2017/01/22 Javascript
Vue.js学习之计算属性
2017/01/22 Javascript
vue.js全局API之nextTick全面解析
2017/07/07 Javascript
js尾调用优化的实现
2019/05/23 Javascript
全局安装 Vue cli3 和 继续使用 Vue-cli2.x操作
2020/09/08 Javascript
Python脚本实现DNSPod DNS动态解析域名
2015/02/14 Python
python实现将读入的多维list转为一维list的方法
2018/06/28 Python
python版本单链表实现代码
2018/09/28 Python
appium+python adb常用命令分享
2020/03/06 Python
pandas to_excel 添加颜色操作
2020/07/14 Python
html5记忆翻牌游戏实现思路及代码
2013/07/25 HTML / CSS
英国标准协会商店:BSI Shop
2019/02/25 全球购物
乐高西班牙官方商店:LEGO Shop ES
2019/12/01 全球购物
英国Iceland杂货店:网上食品购物
2020/12/16 全球购物
应届生妇产科护士求职信
2013/10/27 职场文书
往来会计岗位职责
2013/12/19 职场文书
初一体育教学反思
2014/01/29 职场文书
2014年小班元旦活动方案
2014/02/16 职场文书
电子装配专业毕业生求职信
2014/04/23 职场文书
竞选团支书演讲稿
2014/04/28 职场文书
一帮一活动总结
2014/05/08 职场文书
营销与策划专业求职信
2014/06/20 职场文书
视光学专业自荐信
2014/06/24 职场文书
员工激励培训演讲稿
2014/09/16 职场文书
2015年全国科普日活动总结
2015/03/23 职场文书
无罪辩护词范文
2015/05/21 职场文书
关于运动会的宣传稿
2015/07/23 职场文书
初三语文教学反思
2016/03/03 职场文书