zoukankan      html  css  js  c++  java
  • redis服务器缓存数据库查询出来的数据

      利用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即可;
        }
    }    
  • 相关阅读:
    hdu 5723 Abandoned country 最小生成树 期望
    OpenJ_POJ C16G Challenge Your Template 迪杰斯特拉
    OpenJ_POJ C16D Extracurricular Sports 打表找规律
    OpenJ_POJ C16B Robot Game 打表找规律
    CCCC 成都信息工程大学游记
    UVALive 6893 The Big Painting hash
    UVALive 6889 City Park 并查集
    UVALive 6888 Ricochet Robots bfs
    UVALive 6886 Golf Bot FFT
    UVALive 6885 Flowery Trails 最短路
  • 原文地址:https://www.cnblogs.com/zqphp/p/5643608.html
Copyright © 2011-2022 走看看