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即可;
        }
    }    
  • 相关阅读:
    淘宝技术
    GridView使用
    仿QQ底部切换(Fragment + Radio)
    ViewPage+Fragment(仿微信切换带通知)
    PopupWindow --- 弹出底部窗体
    Activity--弹出底部窗口
    eclipse code style
    抽象类和接口
    java.lang.IllegalStateException: Not connected to server
    android真机 adb调试sqlite数据库
  • 原文地址:https://www.cnblogs.com/zqphp/p/5643608.html
Copyright © 2011-2022 走看看