自己的电脑怎么做网站,福州市做公司网站哪家好,静态网站挂马,9个常用的wordpress sql查询命令远离八股文#xff0c;面试大白话#xff0c;通俗且易懂 看完后试着用自己的话复述出来。有问题请指出#xff0c;有需要帮助理解的或者遇到的真实面试题不知道怎么总结的也请评论中写出来#xff0c;大家一起解决。 java面试题汇总-目录-持续更新中 这个问的挺多的#x…远离八股文面试大白话通俗且易懂 看完后试着用自己的话复述出来。有问题请指出有需要帮助理解的或者遇到的真实面试题不知道怎么总结的也请评论中写出来大家一起解决。 java面试题汇总-目录-持续更新中 这个问的挺多的但是实际项目遇到的很少。网上看了一些标准答案结合实际项目做了下总结。
1、缓存穿透
含义频繁的查询一个不存在于缓存中的数据导致每次都是访问数据库。
场景多存在于恶意攻击。正常业务肯定都是先查缓存然后存在就直接返回不存在就查询数据库。如果数据库中存在就保存在缓存里面不存在直接返回null。但是此时有人恶意攻击查询的全都是缓存里面不存在的甚至数据库也不存在。那么每次就都会查询数据。
解决方案 布隆过滤器就是已存在的数据key提前存到这个过滤器里面。如果来请求了就先看一下过滤器中是否有这个key有的话执行后面的操作。没有就直接返回了。这个不太好用因为还需要考虑实时的更新这个过滤器中的值但是面试我还是会提到。 缓存空值就是请求来了缓存中没有去查询数据库数据库返回null。即使返回null了我也把这个数据key:空值存在缓存里面。你下次来请求这样就直接从缓存里面取空值给你。但是这个要考虑一下清理操作因为你存了空值如果哪天业务里面真有了这个key那么此时返回null就不合适了两种方案1是定时清理为空的key2是创建数据的时候同时更新缓存 ip过滤这个是我做项目常用的但不仅仅局限于缓存穿透主要是防止恶意攻击。我在每个项目的过滤其中都加了IP过滤。具体就是在项目的过滤器中获取用户的请求ip如果相同ip在指定时间段内请求次数大于我设定的次数比如10秒 20次。就直接拉进黑名单。
2、缓存雪崩
含义 缓存雪崩是指缓存中的大量数据同时失效导致大量的请求直接访问数据库增加了数据库的负载。-多个
场景就是数据库中很多缓存都是设置了两小时失效结果在俩小时突然到的时候缓存都失效了然后大量的请求直接去请求数据库。
解决方案 错峰给过期时间错开本来两小时过期可以改成1小时50分钟等等 加锁单机环境互斥锁、分布式环境分布式锁。保证同一时间只有一个能线程能请求到。但是加锁需要注意加锁的粒度。因为加了锁对平时的查询也会有影响所以范围尽可能小。不能得不偿失。
3、缓存击穿
含义 缓存击穿是指对于某个热点数据的并发请求在缓存失效的瞬间大量请求直接访问数据库导致数据库负载剧增。-单个
场景这种在互联网行业比较常见比如商城、购票、下单等等场景下。同时是高峰期的时候比如双11期间突然某个商品缓存没了。一大波请求直接到达全都去请求数据库了。
解决方案
对于这种高频的访问热点就不要设置过期时间了如果非要设置那么就定时刷新缓存。