首页 > 技术文章 > 缓存解析

LZXX 2022-02-18 15:42 原文

缓存

系统优化的第一步就是使用缓存,因为大多数都是查询引起性能慢

而系统也是二八原则, 80%查询 20%写入

 

 

 

 

 

 

 

 

 

1.缓存更新

  数据库数据更新,删除了,缓存数据没更新怎么办-设置缓存过期策略

2.缓存过期策略

  1.永不过期

  2.绝对过期,设置过期时间

  3.滑动过期,有个时间过期范围,在有效期内,如果查询过,就把过期时间推迟


3.线程安全缓存

  1.数据分片---微软提供的MemCache就是这个套路

  2.加锁

 

4.缓存穿透(请求过来的时候-缓存和数据库都没有):虽然数据都没有但是大量并发的时候 请求还是要进到数据库并且还要返回结果给人家。这样人家恶意攻击就难受了

  解决:如果数据没有,缓存就存一个null,下一次来的时候返回null,这样请求就到不了数据库

5.缓存击穿(请求过来的时候-缓存没有数据库有):大量并发请求还是直接到数据库,

  解决:这个问题不大,下一次进来给他缓存就好,或者进行缓存提前预热

6.缓存雪崩(请求过来的时候-数据缓存同时过期):请求还是到数据库来了,

  解决:数据设置随机过期时间,别都设置为30分钟过期,这样就降低缓存雪崩出现

以上都是解决大量并发请求直接到数据库,但是如果因为上面的问题导致数据库崩了,然后重启服务器,直接用系统,服务器又崩了呢?因为重启之后缓存都没有啊,大量请求又来了 怎么解决?

所以要使用缓存预热

7.缓存预热(请求过来的时候-提前加载到缓存):服务重启之后,提前把热点数据放到缓存里面

缓存的使用:客户端缓存 CDN缓存 反向代理缓存 本地缓存 分布式缓存

 

在哪些场景下,需要使用缓存;
1.主要对于热数据进行缓存;修改少,查询多;
2.缓存是为了提高系统性能---数据量太大不要使用缓存;
3.系统中相对于稳定不经常更新的数据,查询多的;
如:
1.权限分配
2.系统中字典数据-----省市区;
3.导航菜单
4.缓存文件

 

推荐阅读