PHP 利用redis 做统计缓存mysql的压力

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介:
<?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);
*/

 

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
21小时前
|
存储 消息中间件 缓存
Redis缓存技术详解
【5月更文挑战第6天】Redis是一款高性能内存数据结构存储系统,常用于缓存、消息队列、分布式锁等场景。其特点包括速度快(全内存存储)、丰富数据类型、持久化、发布/订阅、主从复制和分布式锁。优化策略包括选择合适数据类型、设置过期时间、使用Pipeline、开启持久化、监控调优及使用集群。通过这些手段,Redis能为系统提供高效稳定的服务。
|
1天前
|
缓存 监控 NoSQL
Redis缓存雪崩及应对策略
缓存雪崩是分布式系统中一个常见但危险的问题,可以通过合理的缓存策略和系统设计来降低发生的概率。采用多层次的缓存架构、缓存预热、合理的缓存失效时间等措施,都可以有效应对缓存雪崩,提高系统的稳定性和性能。在实际应用中,及时发现并解决潜在的缓存雪崩问题,是保障系统可用性的关键一环。
28 14
|
4天前
|
缓存 NoSQL Java
优化Redis缓存:解决性能瓶颈和容量限制
优化Redis缓存:解决性能瓶颈和容量限制
15 0
|
4天前
|
存储 缓存 NoSQL
Redis缓存满了怎么办?
选择哪种方法取决于您的应用需求和数据访问模式。需要根据实际情况来决定如何处理Redis缓存满的情况。
25 1
|
6天前
|
缓存 NoSQL Java
springboot业务开发--springboot集成redis解决缓存雪崩穿透问题
该文介绍了缓存使用中可能出现的三个问题及解决方案:缓存穿透、缓存击穿和缓存雪崩。为防止缓存穿透,可校验请求数据并缓存空值;缓存击穿可采用限流、热点数据预加载或加锁策略;缓存雪崩则需避免同一时间大量缓存失效,可设置随机过期时间。文章还提及了Spring Boot中Redis缓存的配置,包括缓存null值、使用前缀和自定义过期时间,并提供了改造代码以实现缓存到期时间的个性化设置。
|
6天前
|
缓存 NoSQL 搜索推荐
Redis缓存雪崩穿透等解决方案
本文讨论了缓存使用中的三个问题:缓存穿透、缓存击穿和缓存雪崩。为解决这些问题,提出了相应策略。对于缓存穿透,建议数据校验和缓存空值;缓存击穿可采用监控扩容、服务限流或加锁机制;缓存雪崩则需避免大量缓存同时过期,可设置随机过期时间。此外,文章还介绍了Spring Boot中Redis缓存配置,包括全局设置及自定义缓存过期时间的方法。
|
6天前
|
存储 缓存 NoSQL
【Go语言专栏】Go语言中的Redis操作与缓存应用
【4月更文挑战第30天】本文探讨了在Go语言中使用Redis进行操作和缓存应用的方法。文章介绍了Redis作为高性能键值存储系统,用于提升应用性能。推荐使用`go-redis/redis`库,示例代码展示了连接、设置、获取和删除键值对的基本操作。文章还详细阐述了缓存应用的步骤及常见缓存策略,包括缓存穿透、缓存击穿和缓存雪崩的解决方案。利用Redis和合适策略可有效优化应用性能。
|
6天前
|
缓存 NoSQL PHP
【PHP 开发专栏】Redis 作为 PHP 缓存的解决方案
【4月更文挑战第30天】本文探讨了Redis作为PHP缓存的优势,如高性能、丰富数据结构、数据持久化和分布式支持。通过安装配置Redis、选择PHP客户端、执行读写操作及制定缓存策略实现缓存。应用场景包括页面、数据和会话缓存。但需注意数据一致性、过期时间、容量和安全问题,以确保应用稳定和安全。Redis能有效提升PHP应用响应速度和处理能力。
|
9天前
|
存储 缓存 NoSQL
Redis多级缓存指南:从前端到后端全方位优化!
本文探讨了现代互联网应用中,多级缓存的重要性,特别是Redis在缓存中间件的角色。多级缓存能提升数据访问速度、系统稳定性和可扩展性,减少数据库压力,并允许灵活的缓存策略。浏览器本地内存缓存和磁盘缓存分别优化了短期数据和静态资源的存储,而服务端本地内存缓存和网络内存缓存(如Redis)则提供了高速访问和分布式系统的解决方案。服务器本地磁盘缓存因I/O性能瓶颈和复杂管理而不推荐用于缓存,强调了内存和网络缓存的优越性。
29 1
|
10天前
|
存储 缓存 NoSQL
node实战——koa给邮件发送验证码并缓存到redis服务(node后端储备知识)
node实战——koa给邮件发送验证码并缓存到redis服务(node后端储备知识)
17 0