手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

Redis多库选择单例类

[日期:2013-08-25] 来源:Linux社区  作者:wzy_1988 [字体: ]

前言

有同学问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;
    }
}

?>

Redis 的详细介绍请点这里
Redis 的下载地址请点这里

推荐阅读:

Ubuntu 12.10下安装Redis(图文详解)+ Jedis连接Redis http://www.linuxidc.com/Linux/2013-06/85816.htm

Redis系列-安装部署维护篇 http://www.linuxidc.com/Linux/2012-12/75627.htm

CentOS 6.3安装Redis http://www.linuxidc.com/Linux/2012-12/75314.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款