歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Redis多庫選擇單例類

前言

有同學問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 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved