歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Redis多庫選擇單例類

Redis多庫選擇單例類

日期:2017/3/1 9:53:34   编辑:Linux編程

前言

有同學問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