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 相关文章推荐
如何过滤高亮显示非法字符
Oct 09 PHP
php预定义常量
Dec 25 PHP
PHP自定义函数收代码
Aug 01 PHP
兼容性比较好的PHP生成缩略图的代码
Jan 12 PHP
深入PHP内存相关的功能特性详解
Jun 08 PHP
PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法
Dec 17 PHP
PHP register_shutdown_function()函数的使用示例
Jun 23 PHP
PHP-FPM之Chroot执行环境详解
Aug 03 PHP
PHP实现批量上传单个文件
Dec 29 PHP
PHP检测链接是否存在的代码实例分享
May 06 PHP
PHP请求Socket接口测试实例
Aug 12 PHP
php的优点总结 php有哪些优点
Jul 19 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
WinXP + Apache +PHP5 + MySQL + phpMyAdmin安装全功略
2006/07/09 PHP
php下使用curl模拟用户登陆的代码
2010/09/10 PHP
php目录操作函数之获取目录与文件的类型
2010/12/29 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
2014/06/24 PHP
php curl批处理实现可控并发异步操作示例
2018/05/09 PHP
PHP PDOStatement::bindValue讲解
2019/01/30 PHP
PHP消息队列实现及应用详解【队列处理订单系统和配送系统】
2019/05/20 PHP
使用Laravel中的查询构造器实现增删改查功能
2019/09/03 PHP
用Javascript同时提交多个Web表单的方法
2009/12/26 Javascript
ExtJS下书写动态生成的xml(兼容火狐)
2013/04/02 Javascript
JS实用的动画弹出层效果实例
2015/05/05 Javascript
JS实现网页标题随机显示名人名言的方法
2015/11/03 Javascript
js图片跟随鼠标移动代码
2015/11/26 Javascript
使用BootStrap建立响应式网页——通栏轮播图(carousel)
2016/12/21 Javascript
angular过滤器实现排序功能
2017/06/27 Javascript
jQuery中each循环的跳出和结束实例
2017/08/16 jQuery
Vue插值、表达式、分隔符、指令知识小结
2018/10/12 Javascript
three.js 制作动态二维码的示例代码
2020/07/31 Javascript
[01:09:50]VP vs Pain 2018国际邀请赛小组赛BO2 第二场
2018/08/20 DOTA
Python中转换角度为弧度的radians()方法
2015/05/18 Python
python实现中文转换url编码的方法
2016/06/14 Python
更改Ubuntu默认python版本的两种方法python-&gt; Anaconda
2016/12/18 Python
python多线程实现同时执行两个while循环的操作
2020/05/02 Python
解析Tensorflow之MNIST的使用
2020/06/30 Python
python怎么判断素数
2020/07/01 Python
html5 利用重力感应实现摇一摇换颜色可用来做抽奖等等
2014/05/07 HTML / CSS
Linux内核的同步机制是什么?主要有哪几种内核锁
2016/07/11 面试题
会计求职自荐信
2014/06/20 职场文书
篮球兴趣小组活动总结
2014/07/07 职场文书
大学生入党积极分子党校学习思想汇报
2014/10/25 职场文书
大学生支教感言
2015/08/01 职场文书
基督教追悼会答谢词
2015/09/29 职场文书
小学数学继续教育研修日志
2015/11/13 职场文书
Python如何利用pandas读取csv数据并绘图
2022/07/07 Python
ssh服务器拒绝了密码 请再试一次已解决(亲测有效)
2022/08/14 Servers
Win11 Beta 22621.601 和 22622.601今日发布 KB5017384修复内容汇总
2022/09/23 数码科技