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 相关文章推荐
如何给phpadmin一个保护
Oct 09 PHP
php daodb插入、更新与删除数据
Mar 19 PHP
用Zend Encode编写开发PHP程序
Feb 21 PHP
30 个很棒的PHP开源CMS内容管理系统小结
Oct 14 PHP
php字符串按照单词进行反转的方法
Mar 14 PHP
php使用正则验证中文
Apr 06 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
Sep 11 PHP
thinkPHP框架实现图像裁剪、缩放、加水印的方法
Mar 14 PHP
yii2 url重写并隐藏index.php方法
Dec 10 PHP
laravel自定义分页的实现案例offset()和limit()
Oct 15 PHP
PHP数组array类常见操作示例
May 15 PHP
PHP重载基础知识回顾
Sep 10 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
php session应用实例 登录验证
2009/03/16 PHP
php实现水仙花数示例分享
2014/04/03 PHP
ThinkPHP实现跨模块调用操作方法概述
2014/06/20 PHP
php实现微信公众平台账号自定义菜单类
2015/10/11 PHP
PHP利用超级全局变量$_POST来接收表单数据的实例
2016/11/05 PHP
jQuery实现表单input中提示文字value随鼠标焦点移进移出而显示或隐藏的代码
2010/03/21 Javascript
jquery的index方法实现tab效果
2011/02/16 Javascript
js判断上传文件的类型和大小示例代码
2013/10/18 Javascript
Jquery实现Div上下移动示例
2014/04/23 Javascript
浏览器窗口大小变化时使用resize事件对框架不起作用的解决方法
2014/05/11 Javascript
随鼠标移动的时钟非常漂亮遗憾的是只支持IE
2014/08/12 Javascript
jQuery实现异步获取json数据的2种方式
2014/08/29 Javascript
jQuery扁平化风格下拉框美化插件FancySelect使用指南
2015/02/10 Javascript
jQuery实现contains方法不区分大小写的方法
2015/02/13 Javascript
ECMAScript6函数剩余参数(Rest Parameters)
2015/06/12 Javascript
js控制台输出的方法(详解)
2016/11/26 Javascript
详解vue-cli 构建Vue项目遇到的坑
2017/08/30 Javascript
webpack公共组件引用路径简化小技巧
2018/06/15 Javascript
单页面vue引入百度统计的使用方法示例详解
2018/10/13 Javascript
ant design vue嵌套表格及表格内部编辑的用法说明
2020/10/28 Javascript
JavaScript 判断浏览器是否是IE
2021/02/19 Javascript
Django中间件实现拦截器的方法
2018/06/01 Python
利用Python将文本中的中英文分离方法
2018/10/31 Python
Pandas读取并修改excel的示例代码
2019/02/17 Python
python机器学习库scikit-learn:SVR的基本应用
2019/06/26 Python
Python日志无延迟实时写入的示例
2019/07/11 Python
对Django项目中的ORM映射与模糊查询的使用详解
2019/07/18 Python
python批量替换文件名中的共同字符实例
2020/03/05 Python
Django中如何用xlwt生成表格的方法步骤
2021/01/31 Python
利用promise及参数解构封装ajax请求的方法
2021/03/24 Javascript
什么样的创业计划书可行性高?
2014/02/01 职场文书
创先争优活动党员公开承诺书
2014/08/29 职场文书
收款委托书范本
2014/09/11 职场文书
反对形式主义、官僚主义、享乐主义和奢靡之风整改措施
2014/09/17 职场文书
Go各时间字符串使用解析
2021/04/02 Golang
vue3使用vue-router的完整步骤记录
2021/06/20 Vue.js