您的位置:首页 > 数据库 > Redis

redis服务器缓存数据库查询出来的数据

2016-07-05 14:47 519 查看
  利用redis做缓存服务器来缓解数据库查询压力是非常有效也是非常有必要的, 当用户第一次点击页面的时候查询数据库, 然后将查询结果缓存在redis服务器中,缓存时间随你的数据改变时间而定,这样可大大降低数据库压力;下面是具体函数方法;

  查询数据库操作这里就不多说了, 这里主要说关于redis缓存方面的技术操作;

  

public function getSqlVal(){
//获取参数列表,这个参数随你需求而定,一般可能需要传入dbname,查询方式如fetchAll,查询语句等
$argv = func_get_args();
//假设这里现在只传入dbName和sql语句
$dbName = $argv[0];
$sql = $argv[1];
//现在把这个参数列表转成md5之后作为存redis的key值
$md5SqlKey = MD5(serialize($argv));

//下面通过一个redis函数来进行存取数据
$res = getRedisData($md5SqlKey);
//如果取到数据,说明已经缓存在redis服务器中, 直接取数据就好, 如果没有数据, 则再去数据库查询数据,再讲查询的数据存在redis服务器中
if(!empty($res))  {
return $res;
}
//后面是查询数据库操作,查询结果返回在$res中
getRedisData($md5SqlKey,$res);  //讲返回结果存在redis中
return $res;

}


getRedisData这个函数的封装:


//这里$key就是传入的md5处理过的键,$value是要存的数据, 如果为空代表取数据,不为空折是存数据,time是缓存时间,不设置默认系统设置时间
function getRedisData($key,$value=null,$time=null){
//首先这里需要实例化redis对象,redis的封装我这里就不写了,到这里肯定会有自己的封装
$redis = new Redis();
if($value == null){
return $redis->get($key)  ;
}else{
if($time==null){
$timeOut = 2*60;//过期时间默认,可自行设置
}else{
$timeOut = $time;
}
$redis->set($key,serialize($value),$timeOut) //这里用serialize函数是序列化这个结果集,取的时候直接unserialize即可;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: