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初学者最感迷茫的问题小结
Mar 27 PHP
php数据库连接时容易出错的特殊符号问题
Sep 01 PHP
提示Trying to clone an uncloneable object of class Imagic的解决
Oct 27 PHP
PHP写的求多项式导数的函数代码
Jul 04 PHP
PHP处理SQL脚本文件导入到MySQL的代码实例
Mar 17 PHP
PHP实现采集中国天气网未来7天天气
Oct 15 PHP
php之curl设置超时实例
Nov 03 PHP
php数组操作之键名比较与差集、交集赋值的方法
Nov 10 PHP
浅析PHP中的i++与++i的区别及效率
Jun 15 PHP
php支付宝系列之电脑网站支付
May 30 PHP
php实现有序数组旋转后寻找最小值方法
Sep 27 PHP
PHP vsprintf()函数格式化字符串操作原理解析
Jul 14 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
《APMServ 5.1.2》使用图解
2006/10/23 PHP
Smarty局部缓存的几种方法简介
2014/06/17 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
YII框架http缓存操作示例
2019/04/29 PHP
聊聊 PHP 8 新特性 Attributes
2020/08/19 PHP
基于datagrid框架的查询
2013/04/08 Javascript
同域jQuery(跨)iframe操作DOM(示例代码)
2013/12/13 Javascript
js 日期比较相关天数代码
2014/04/02 Javascript
实现checkbox全选、反选、取消JavaScript小脚本异常
2014/04/10 Javascript
Node.js中HTTP模块与事件模块详解
2014/11/14 Javascript
javascript瀑布流布局实现方法详解
2016/02/17 Javascript
Js 获取、判断浏览器版本信息的简单方法
2016/08/08 Javascript
JQ选择器_选择同类元素的第N个子元素的实现方法
2016/09/08 Javascript
jsonp跨域请求实现示例
2017/03/13 Javascript
微信小程序 支付后台java实现实例
2017/05/09 Javascript
关于页面刷新vuex数据消失问题解决方案
2017/07/03 Javascript
react+redux的升级版todoList的实现
2017/12/18 Javascript
在knockoutjs 上自己实现的flux(实例讲解)
2017/12/18 Javascript
vue如何将v-for中的表格导出来
2018/05/07 Javascript
Angular Material Icon使用详解
2018/11/07 Javascript
使用Python的Bottle框架写一个简单的服务接口的示例
2015/08/25 Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
2019/10/12 Python
用html5实现语音搜索框的方法
2014/03/18 HTML / CSS
英国家喻户晓的高街品牌:River Island
2017/11/28 全球购物
Lookfantastic西班牙官网:英国知名美妆购物网站
2018/06/13 全球购物
中专毕业生自荐信
2013/11/16 职场文书
船舶专业个人求职信范文
2014/01/02 职场文书
农村婚礼证婚词
2014/01/08 职场文书
哈弗商学院毕业生求职信
2014/02/26 职场文书
党章培训心得体会
2014/09/04 职场文书
无财产无子女离婚协议书范文
2014/09/14 职场文书
学校政风行风评议工作总结
2014/10/21 职场文书
2014年幼儿园个人工作总结
2014/11/10 职场文书
2014年食品安全工作总结
2014/12/04 职场文书
趣味运动会新闻稿
2015/07/17 职场文书
Python基础之元编程知识总结
2021/05/23 Python