首先说一下连接池的作用:连接池是将已经创建好的连接保存在池中,当有请求来时,直接使用已经创建好的连接对数据库进行访问。这样省略了创建连接和销毁连接的过程。这样性能上得到了提高。连接池就是为了避免重复多次的打开数据库连接而造成的性能的下降和系统资源的浪费。
直接上代码:
/**
* redis 连接池
* Class RedisPool
*/
class RedisPool
{
private static $connections = array(); //定义一个对象池
private static $servers = array(); //定义redis配置文件
/**
* 定义添加redis配置方法
* @param $conf
*/
public static function addServer($conf)
{
foreach ($conf as $alias => $data) {
self::$servers[$alias] = $data;
}
}
/**
* 两个参数要连接的服务器KEY,要选择的库
* @param $alias 库别名
* @param int $select
* @return mixed
*/
public static function getRedis($alias, $select = 0)
{
//判断连接池中是否存在
if (!array_key_exists($alias, self::$connections)) {
$redis = new \Redis();
$redis->connect(self::$servers[$alias][0], self::$servers[$alias][1]);
self::$connections[$alias] = $redis;
if (isset(self::$servers[$alias][2]) && self::$servers[$alias][2] != "") {
self::$connections[$alias]->auth(self::$servers[$alias][2]);
}
}
self::$connections[$alias]->select($select);
return self::$connections[$alias];
}
使用方式:
$conf = array(
'R' => array('127.0.0.1',6379) //定义Redis配置, R为自定义名称
);
RedisPool::addServer($conf); //加载Redis配置
$redis = RedisPool::getRedis('R'); //连接R,使用默认0库
$redis->set('user','private'); //数据操作
echo $redis ->get('user');
)
建议封装为一个函数,在使用的时候直接调用获得一个redis实例。