课程目录前端
缓存的使用与设计算法
受益:1.加速读写:经过缓存加速读写速度:CPU L1/L2/L3Cache、Linux page Cache加速硬盘读写、浏览器缓存、Ehcache缓存数据库结果 数据库
2.下降后端负载:后端服务器经过前端缓存下降负载:业务端使用Redis下降后端MySQL负载等后端
成本:1.数据不一致 :缓存层和数据层有时间窗口不一致,和更新策略有关浏览器
2.代码维护成本:多了一层缓存逻辑缓存
3.运维成本:例如Redis Cluster服务器
使用场景运维
1.下降后端负载:对高消耗的SQL:join结果集/分组统计结果缓存性能
2.加速请求响应:利用Redis/Memcache优化IO响应时间优化
3.大量写合并为批量写:如计数器先Redis累加再批量写DB
1.LRU/LFU/FIFO算法剔除:例如maxmemory-policy
2.超时剔除:例如expire
3.主动更新:开发控制生命周期
三个角度
1.通用性:全量属性更好。
2.占用空间:部分属性更好。
3.代码维护:表面上全量属性更好。
缘由: 1.业务代码自身问题
2.恶意共计、爬虫等等
如何发现:1.业务的响应时间(可预计的)
2.业务自己问题
3.相关指标:总调用数、缓存层 命中数、存储层命中数
解决方法:
1.缓存空对象
2.布隆过滤器拦截
加机器性能没有提高,反而降低
互斥锁 :减小了重建缓存次数,增长了等待
永不过时:可能数据不一致