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


Posted in PHP onNovember 14, 2015

本文实例讲述了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 无法加载mysql的module的时候的配置的解决方案引发的思考
Jan 27 PHP
与文件上传有关的php配置参数总结
Jun 14 PHP
PHP面向对象教程之自定义类
Jun 10 PHP
PHP图片处理之图片背景、画布操作
Nov 19 PHP
CentOS6.5 编译安装lnmp环境
Dec 21 PHP
php实现遍历多维数组的方法
Nov 25 PHP
Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法
Jul 02 PHP
PHP线程的内存回收问题
Jul 08 PHP
功能强大的PHP POST提交数据类
Jul 15 PHP
php类的自动加载操作实例详解
Sep 28 PHP
PHP 序列化和反序列化函数实例详解
Jul 18 PHP
PHP程序守护进程化实现方法详解
Jul 16 PHP
PHP+redis实现添加处理投票的方法
Nov 14 #PHP
PHP实现操作redis的封装类完整实例
Nov 14 #PHP
php实现的递归提成方案实例
Nov 14 #PHP
PHP使用Pthread实现的多线程操作实例
Nov 14 #PHP
开启PHP Static 关键字之旅模式
Nov 13 #PHP
php正则表达式学习笔记
Nov 13 #PHP
php邮箱地址正则表达式验证
Nov 13 #PHP
You might like
网站当前的在线人数
2006/10/09 PHP
php中使用__autoload()自动加载未定义类的实现代码
2013/02/06 PHP
php字符串的替换,分割和连接方法
2016/05/23 PHP
PHP中CheckBox多选框上传失败的代码写法
2017/02/13 PHP
PHP完全二叉树定义与实现方法示例
2017/10/09 PHP
jQuery 1.0.4 - New Wave Javascript(js源文件)
2007/01/15 Javascript
js 刷新页面的代码小结 推荐
2010/04/02 Javascript
javascript手工制作悬浮菜单
2015/02/12 Javascript
javascript获取select值的方法分析
2015/07/02 Javascript
javascript单例模式的简单实现方法
2015/07/25 Javascript
AngularJS 实现点击按钮获取验证码功能实例代码
2017/07/13 Javascript
Webpack框架核心概念(知识点整理)
2017/12/22 Javascript
JavaScript 2018 中即将迎来的新功能
2018/09/21 Javascript
Node.js npm命令运行node.js脚本的方法
2018/10/10 Javascript
基于JS判断对象是否是数组
2020/01/10 Javascript
40行代码把Vue3的响应式集成进React做状态管理
2020/05/20 Javascript
python中遍历文件的3个方法
2014/09/02 Python
Django如何实现内容缓存示例详解
2017/09/24 Python
python密码错误三次锁定(实例讲解)
2017/11/14 Python
pandas 按照特定顺序输出的实现代码
2018/07/10 Python
对pandas中Series的map函数详解
2018/07/25 Python
python3.6使用pickle序列化class的方法
2018/10/22 Python
Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】
2018/12/11 Python
django自带调试服务器的使用详解
2019/08/29 Python
Pytest框架之fixture的详细使用教程
2020/04/07 Python
python openpyxl模块的使用详解
2021/02/25 Python
纯CSS3代码实现switch滑动开关按钮效果
2016/08/30 HTML / CSS
体验完美剃须:The Art of Shaving
2018/08/06 全球购物
临床医学专业个人的自我评价
2013/09/27 职场文书
创业计划书六个要素
2013/12/26 职场文书
优秀通讯员事迹材料
2014/01/28 职场文书
数学与统计学院学生个人职业生涯规划书
2014/02/10 职场文书
房地产开发项目建议书
2014/05/16 职场文书
中学生的1000字检讨书
2014/10/11 职场文书
2015年高中班级工作总结
2015/07/21 职场文书
如何通过简单的代码描述Angular父组件、子组件传值
2022/04/07 Javascript