网站正在建设 英文翻译,百度搜索站长平台,工作室logo设计免费生成,wordpress设计类网站目录
一、缓存穿透
1、概念
2、解决办法
1.缓存空对象
2.布隆过滤
二、缓存雪崩
1、概念
2、解决办法
1.给key设置随机的过期时间TTL
2.业务添加多级缓存
3.利用集群提供服务可用性
4.缓存业务添加降级限流
三、缓存击穿
1、概念
2、解决办法
1.互斥锁
2.逻辑…目录
一、缓存穿透
1、概念
2、解决办法
1.缓存空对象
2.布隆过滤
二、缓存雪崩
1、概念
2、解决办法
1.给key设置随机的过期时间TTL
2.业务添加多级缓存
3.利用集群提供服务可用性
4.缓存业务添加降级限流
三、缓存击穿
1、概念
2、解决办法
1.互斥锁
2.逻辑过期 一、缓存穿透
1、概念
当客户端带参数来请求某一数据的信息时会先去在缓存里面找如果缓存没有就去数据库中查找并写入缓存返回如果这个请求所带的参数是非法参数当它查询缓存时缓存中没有该数据此时就会查询数据库而数据库中也没有该数据没办法构建缓存数据 2、解决办法
1.缓存空对象
当请求穿过缓存请求数据库时由于数据库中没有数据所以此时我们将null进行返回并缓存下次请求时从缓存中直接获取到null。这种方式实现简单但是内存占用会比较大它也存短暂的数据不一致问题 2.布隆过滤
在请求到达缓存之前先会经过布隆过滤器对请求校验如果合法就放行如果非法就拒绝这种方式内存占用少但是实现复杂也存在误判的可能
二、缓存雪崩
1、概念
当某一时刻缓存中大量的key同时失效或者redis宕机导致请求大量的打到数据库上导致数据库压力剧增 2、解决办法
1.给key设置随机的过期时间TTL
产生缓存雪崩的其中一个原因是大量key同时过期我们可以通过设置不同的过期时间来防止缓存雪崩而设置不同的过期时间可以设置随机的过期时间
2.业务添加多级缓存
在多个层面去建立缓存
3.利用集群提供服务可用性
提供系统可用性可以搭建redis集群当集群中一个服务宕机时不会影响整体缓存的使用
4.缓存业务添加降级限流
当redis出现异常时可以通过降级限流来保护数据库的安全性
三、缓存击穿
1、概念
一个被高并发访问且重建缓存业务复杂的key忽然失效无数的请求在瞬间给数据库带来巨大冲击
2、解决办法
1.互斥锁
由于这个热key失效所以当请求来时就需要去数据库查询并重建缓存但是由于这个key是一个被高并发访问的key所以同一时间访问完数据库去重建该key的线程可能较多导致多个线程重复重建以及响应变慢此时我们可以对缓存重建加锁当线程1去重建的时候线程2不在去重复重建但是其他没有获取到锁的线程需要等待性能受到影响
2.逻辑过期
我们在存入这个热key在存入的时候给他加一个逻辑过期的时间字段该字段记录过期时间每次获取的时候查看该key是否逻辑过期如果过期此时需要重建该缓存此时就可以开启一个线程异步的去重建然后返回逻辑过期的数据当重建缓存的异步线程没有执行完时此时另一个线程来访问发现过期尝试重建时没有拿到锁于是它将逻辑过期的旧数据返回。它线程无需要等待性能好。但是不能保证一致性有额外的内存消耗且实现复杂