杭州品牌网站设计,自己做的网站能卖么,wordpress产品详情相册,前端工作一年工资多少正常一、缓存穿透 1、含义
缓存穿透是指查询一个缓存中和数据库中都不存在的数据#xff0c;导致每次查询这条数据都会透过缓存#xff0c;直接查库#xff0c;最后返回空。 2、解决方案
1#xff09;缓存空对象 就是当数据库中查不到数据的时候#xff0c;我缓存一个空对象…一、缓存穿透 1、含义
缓存穿透是指查询一个缓存中和数据库中都不存在的数据导致每次查询这条数据都会透过缓存直接查库最后返回空。 2、解决方案
1缓存空对象 就是当数据库中查不到数据的时候我缓存一个空对象然后给这个空对象的缓存设置一个过期时间这样下次再查询该数据的时候就可以直接从缓存中拿到从而达到了减小数据库压力的目的。 但这种解决方式有两个缺点1需要缓存层提供更多的内存空间来缓存这些空对象当这种空对象很多的时候就会浪费更多的内存2会导致缓存层和存储层的数据不一致即使在缓存空对象时给它设置了一个很短的过期时间那也会导致这一段时间内的数据不一致问题。 2使用布隆过滤器 简单地说就是在缓存前面加了一个过滤器查询一个数据时布隆过滤器中存在才继续查询缓存否则直接返回空值。 注意布隆过滤器可能误判不存在的肯定不存在存在的也可能不存在 布隆过滤器算法 参考文章 二、缓存击穿
1、含义
缓存击穿是指当缓存中某个热点数据过期了在该热点数据重新载入缓存之前有大量的查询请求穿过缓存并发高直接查询数据库。 2、解决方案
1使用分布式锁保证同一时刻只能有一个查询请求重新加载热点数据到缓存中这样其他的线程只需等待该线程运行完毕即可重新从Redis中获取数据 2在后台同时启一个定时任务去定时地更新这个缓存。 三、缓存雪崩
1、含义
缓存雪崩是指当缓存中有大量的key在同一时刻过期导致大量的查询请求全部到达数据库造成数据库查询压力骤增甚至直接挂掉。 2、解决方案
给Redis设置过期时间时额外添加一个随机时间来打散key的过期时间