这里有新鲜出炉的 Redis 官方指南,程序狗速度看过来!
Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。
这篇文章主要介绍了 PHP 实现的 Redis 多库选择功能单例类, 结合实例形式分析了 php 采用单例模式实现 redis 数据库的多库选择功能, 需要的朋友可以参考下
本文实例讲述了 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 程序设计有所帮助。
来源: http://www.phperz.com/article/17/0811/344422.html