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 可阅读随机字符串代码
May 26 PHP
PHP编码转换
Nov 05 PHP
解析php curl_setopt 函数的相关应用及介绍
Jun 17 PHP
关于使用key/value数据库redis和TTSERVER的心得体会
Jun 28 PHP
php断点续传之如何分割合并文件
Mar 22 PHP
PHP取余函数介绍MOD(x,y)与x%y
May 15 PHP
Codeigniter实现处理用户登录验证后的URL跳转
Jun 12 PHP
php中获取主机名、协议及IP地址的方法
Nov 18 PHP
Yii2前后台分离及migrate使用(七)
May 04 PHP
Zend Framework使用Zend_Loader组件动态加载文件和类用法详解
Dec 09 PHP
phpmyadmin下载、安装、配置教程
May 16 PHP
PHP基于curl post实现发送url及相关中文乱码问题解决方法
Nov 25 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中include文件变量作用域
2015/06/18 PHP
阿里云的WindowsServer2016上部署php+apache
2018/07/17 PHP
javascript json 新手入门文档
2009/12/03 Javascript
javascript 打开页面window.location和window.open的区别
2010/03/17 Javascript
多种方法实现360浏览器下禁止自动填写用户名密码
2014/06/16 Javascript
js实现图片无缝滚动特效
2020/03/19 Javascript
jQuery 中的 DOM 操作
2016/04/26 Javascript
javaScript 连接打印机,打印小票的实例
2017/12/29 Javascript
在Vue项目中使用d3.js的实例代码
2018/05/01 Javascript
react.js组件实现拖拽复制和可排序的示例代码
2018/08/20 Javascript
vue下使用nginx刷新页面404的问题解决
2019/08/02 Javascript
深入理解python函数递归和生成器
2016/06/06 Python
用生成器来改写直接返回列表的函数方法
2017/05/25 Python
python程序运行进程、使用时间、剩余时间显示功能的实现代码
2019/07/11 Python
pycharm 批量修改变量名称的方法
2019/08/01 Python
python3应用windows api对后台程序窗口及桌面截图并保存的方法
2019/08/27 Python
500行代码使用python写个微信小游戏飞机大战游戏
2019/10/16 Python
PyTorch中topk函数的用法详解
2020/01/02 Python
Python命名空间namespace及作用域原理解析
2020/06/05 Python
HTML5 在canvas中绘制文本附效果图
2014/06/23 HTML / CSS
详解HTML5中表单验证的8种方法介绍
2016/12/19 HTML / CSS
eBay瑞士购物网站:eBay.ch
2018/12/24 全球购物
匈牙利超级网上商店和优惠:Alza.hu
2019/12/17 全球购物
C#面试常见问题
2013/02/25 面试题
什么是方法的重载
2013/06/24 面试题
店长岗位的工作内容
2013/11/12 职场文书
优秀的计算机专业求职信范文
2013/12/27 职场文书
党的群众路线教育实践活动学习心得体会
2014/03/03 职场文书
论文评语大全
2014/04/29 职场文书
公司门卫岗位职责范本
2014/07/08 职场文书
单位作风建设剖析材料
2014/10/11 职场文书
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
2021/06/11 Python
python 网络编程要点总结
2021/06/18 Python
剖析后OpLog订阅MongoDB的数据变更就没那么难了
2022/02/24 MongoDB
Win10防火墙白名单怎么设置?Win10添加防火墙白名单方法
2022/04/06 数码科技
微软发布Windows 11今年最大更新22H2(附 ISO 镜像官方下载)
2022/09/23 数码科技