PHP网站造成mysql CPU压力大 如何用redis缓存

 用户0h2eqqbg44 发布于 2022-11-29 21:45

做了一个网站 php SQL使用了UNION ALL 造成网站访问mysql CPU压力非常大 如果对全站的页面进行redis缓存怎么实现 ?这种情况应该怎么解决比较好

6 个回答
  • 1:理解缓存本质。
    业务能接受非实时吗?业务调用频率?缓存时间?过期时间?
    2:CPU压力过大或其他问题,有确切的分析吗?
    3:都没问题后,是否应该考虑是业务本身的呢,如设计上有啥缺陷?缓存掩盖不了设计的bug。因为很多业务场景变化很频繁,即使用缓存,也不能解决。
    4:怎么实现?
    1):全站缓存是个弊端,不是实现不了,用一个filter 拦截所有请求,req->k,res->v
    2):redis数据量非常大时候,必须分集群,增加了复杂性。

    2022-11-29 21:58 回答
  • 很多框架自带cache缓存类,可以修改这个缓存驱动为redis,然后所有从数据库取数据的操作都改为先判断是否有对应缓存,有的话取缓存,没有的话先取数据库,然后再将取到的数据写入一份到缓存里面用于下一次请求使用。

    2022-11-29 21:58 回答
  • 首先考虑一下为什么用缓存,自己总结了一下现在所应用到的一些缓存,顺便巩固一下学到的知识


    1. ob 缓冲区做的局部缓存,比如我一个页面好几天都不会有变化那种,不过局部不缓存就是要你跑异步了,这种方式是缓存静态页,我写的类是加密丢到阿里oss的还蹭了下它的cdn

    2. Redis 我用到了主从分离来解决统计网站 pv,uv,然后写定时脚本对它定时入库的,因为它有个的概念太好了

    3. Memcache 用来缓解部分常用简单的key/value反复查询的数据

    2022-11-29 21:58 回答
  • 还是先从unition上来解决吧,为什么不分开查询,最后组装数据呢

    2022-11-29 21:58 回答
  • 感觉缓存并没办法解决你的问题,反而增加了很多复杂度。 先从SQL的角度来解决吧,分解。

    2022-11-29 21:58 回答
    • 造成CPU消耗过大,建议去定位下具体是什么原因造成。

    • 先看看sql语句上能否优化, 还有会不会有慢查询以及索引是否打上

    • 如果网站数据量确实很大,再考虑使用redis, 可以将redis打造成nosql,业务处理使用redis来实现,只有信息落地再进入mysql

    2022-11-29 21:58 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有