PHP使用redis实现统计缓存mysql压力的方法

5年以前  |  阅读数:791 次  |  编程语言:PHP 

本文实例讲述了PHP使用redis实现统计缓存mysql压力的方法。分享给大家供大家参考,具体如下:


    <?php
      header("Content-Type:text/html;charset=utf-8");
      include 'lib/mysql.class.php';
      $mysql_obj = mysql::getConn();
      //redis 
      $redis = new Redis();
      $redis->pconnect('127.0.0.1', 6379);
      if(isset($_SERVER['HTTP_REFERER'])){
        $url_md5 = md5($_SERVER['HTTP_REFERER']);
      }
      $adve_key = 'adve'; 
      $adve_key_exists = 'adve_exists';
      if(!$redis->exists($adve_key_exists)){
        $list = $mysql_obj->fetch_array("select * from user_online_adve");
        if($list){
          foreach ($list as $key => $value) {
            $url_hash = md5($value['adve_url']);
            $adve_hash_key = $adve_key.":".$url_hash;
            $id = $value['id'];
            $redis->set($adve_hash_key,$id);
            $redis->set($adve_key_exists,true);
            //$redis->hmset($adve_hash_key, array('id' =>$id));
            //print_r($redis->get($adve_hash_key));
          }
        }
      }
      $adve_new_key = $adve_key.':'.$url_md5;
      if($redis->exists($adve_new_key)){
          $adve_plus = $adve_new_key.":plus" ;
          if(!$redis->exists($adve_plus)){
            $redis->set($adve_plus,1); 
          }else{
            $redis->incr($adve_plus);
            $num = $redis->get($adve_plus);
            if($num >10){
              $id = $redis->get($adve_new_key);
              // insert to sql;
              $mysql_obj->query("update user_online_adve set adve_num=adve_num+$num where id=$id");
              $redis->set($adve_plus,1);
            }
          }
      }
      header('HTTP/1.0 301 Moved Permanently');
      header('Location: https://itunes.apple.com/cn/app/san-guo-zhi15-ba-wangno-da-lu/id694974270?mt=8');
    /*
      if(){
          $adve_plus = $adve_key.":plus" ;
          if($redis->exists($adve_plus)){
            $redis->incr($adve_plus);
          }else{
            $redis->set($adve_plus,1); 
          }
          echo $redis->get($adve_plus);
      }
      foreach ($list as $key => $value) {
          $url_hash = md5($value['adve_url']);
          $id = $value['id'];
          $adve_num = $value['adve_num'];
          $adve_plus = $adve_key.":plus" ;
          if($redis->exists($adve_plus)){
            $redis->incr($adve_plus);
          }else{
            $redis->set($adve_plus,1); 
          }
          echo $redis->get($adve_plus);
          //if($redis->)
          //$redis->hmset($adve_key, array('id' =>$id, 'adve_num'=>$adve_num));
          //print_r($redis->hmget("adve:$url_hash", array('adve_num')));
      }
        print_r($list);
    */

希望本文所述对大家php程序设计有所帮助。

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例