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

 更新时间:2015年11月14日 11:30:20   作者:jackluo  
这篇文章主要介绍了PHP使用redis实现统计缓存mysql压力的方法,涉及PHP操作MySQL数据库及使用Redis统计的相关技巧,需要的朋友可以参考下

本文实例讲述了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 万年历实现代码

    PHP 万年历实现代码

    php中实现万年历效果代码,需要的朋友可以参考下
    2012-10-10
  • 分析PHP中单双引号的误区和双引号小隐患

    分析PHP中单双引号的误区和双引号小隐患

    PHP中单双引号常常会给人带来很多的误区,其中双引号还有些小隐患,下面是小编给大家整理的,需要的可以参考。
    2016-07-07
  • 深入解析phpCB批量转换的代码示例

    深入解析phpCB批量转换的代码示例

    本篇文章是对phpCB批量转换的代码示例进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • PHP使用mysql与mysqli连接Mysql数据库用法示例

    PHP使用mysql与mysqli连接Mysql数据库用法示例

    这篇文章主要介绍了PHP使用mysql与mysqli连接Mysql数据库的方法,结合实例形式分析了mysql与mysqli操作数据库的连接、查询、断开的相关实现技巧,需要的朋友可以参考下
    2016-07-07
  • php基于PDO连接MSSQL示例DEMO

    php基于PDO连接MSSQL示例DEMO

    这篇文章主要介绍了php基于PDO连接MSSQL的方法,结合实例形式分析了php使用pdo针对mssql数据库的连接、查询及资源释放等相关技巧,需要的朋友可以参考下
    2016-07-07
  • PHP用反撇号执行外部命令

    PHP用反撇号执行外部命令

    shell_exec() 命令行实际上仅是反撇号 ` 操作符的变体,如果您编写过 shell 或 Perl 脚本,您就知道可以在反撇号操作符内部捕捉其他命令的输出。
    2015-04-04
  • PHP 显示客户端IP与服务器IP的代码

    PHP 显示客户端IP与服务器IP的代码

    如何用 PHP 来获取客户端 IP 和 服务器(主机)的 IP 呢?需要的朋友可以参考下。
    2010-10-10
  • 基于PHP的微信公众号的开发流程详解

    基于PHP的微信公众号的开发流程详解

    这篇文章主要介绍了基于PHP的微信公众号的开发流程详解,文章通过示例代码和服务器及菜单配置的图文讲解介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 标准版Eclipse搭建PHP环境的详细步骤

    标准版Eclipse搭建PHP环境的详细步骤

    这篇文章主要介绍了Eclipse搭建PHP环境的详细步骤,感兴趣的小伙伴们可以参考一下
    2015-11-11
  • PHP实现读取Excel文件的记录(一)

    PHP实现读取Excel文件的记录(一)

    这篇文章主要介绍了如何利用PHP读取Excel文件的记录,文中的示例代码讲解详细,对我们学习或工作有一定帮助,感兴趣的可以跟随小编了解一下
    2022-03-03

最新评论