本文共 913 字,大约阅读时间需要 3 分钟。
- 需要经过复杂运算后得出的数据,存储系统无能为力,比如统计在线用户。
- 读多写少的数据,存储系统有心无力,比如微博,明星发一条,上千万浏览。
缓存穿透是指缓存没有发挥作用,业务系统虽然去缓存查询数据,但缓存中没有数据,业务系统需要再次去存储系统查询数据。
- 存储数据不存在
- 缓存数据生成耗费大量时间或者资源
缓存雪崩是指当缓存失效(过期)后引起系统性能急剧下降的情况。缓存雪崩的常见解决方法有两种:更新锁机制和后台更新机制。
缓存热点的解决方案就是复制多份缓存副本,将请求分散到多个缓存服务器上,减轻缓存热点导致的单台缓存服务器压力,不同的缓存副本不要设置统一的过期时间。
满足业务的前提下,缓存方案尽量简单,越复杂的方案越容易出错,到时候各种不一致问题烦死你。
1.什么数据应该缓存
2.什么时机触发缓存和以及触发方式是什么 3.缓存的层次和粒度( 网关缓存如 nginx,本地缓存如单机文件,分布式缓存如redis cluster,进程内缓存如全局变量) 4.缓存的命名规则和失效规则 5.缓存的监控指标和故障应对方案 6.可视化缓存数据如 redis 具体 key 内容和大小
以下仅限mysql:
- mysql第一种缓存叫sql语句结果缓存,但条件比较苛刻,程序员不可控,我们的dba线上都关闭这个功能,具体实现可以查一下
- mysql第二种缓存是innodb buffer pool,缓存的是磁盘上的分页数据,不是sql的查询结果,sql的执行过程省不了。而mc,redis这些实际上都是缓存sql的结果,两种缓存方式,性能差很远。因此,可控性,性能是数据库缓存和独立缓存的主要区别2. mysql第二种缓存是innodb buffer pool,缓存的是磁盘上的分页数据,不是sql的查询结果,sql的执行过程省不了。而mc,redis这些实际上都是缓存sql的结果,两种缓存方式,性能差很远。因此,可控性,性能是数据库缓存和独立缓存的主要区别
转载地址:http://ppypi.baihongyu.com/