(4)数据权限限制当缓存中存储的数据受到权限限制时,只有拥有足够权限的用户才能访问和处理这些数据,从而导致缓存失去了它的作用 。
(5)Redis性能瓶颈当Redis服务器的性能达到极限时,Redis缓存可能会因为响应过慢而导致穿透 。
2、如何避免Redis缓存穿透?(1)设置合理的缓存大小根据实际需求设置合理的缓存大小,以避免缓存穿透 。
(2)优化数据结构根据实际需求优化数据结构,以减少数据的大小和更新频率 。
(3)设置合理的过期时间设置合理的过期时间,以避免缓存失去它的作用 。
(4)增加Redis的并发处理能力通过增加Redis的并发处理能力,以提高缓存的处理能力和响应速度 。
(5)优化Redis服务器的硬件和软件配置通过优化Redis服务器的硬件和软件配置,以提高Redis的性能和处理能力 。

文章插图
Redis缓存穿透
四、通过空对象缓存解决缓存穿透如果发生了缓存穿透,可以针对要查询的数据,在Redis中插入一条数据,添加一个约定好的默认值,比如defaultNull 。
比如你想通过某个id查询某某订单,Redis中没有,MySQL中也没有,此时,就可以在Redis中插入一条,存为defaultNull,下次再查询就有了,因为是提前约定好的,前端也明白是啥意思,一切OK,岁月静好 。
这种方式只能解决key相同的情况,如果key都不同,则完蛋 。
五、google布隆过滤器Guava解决缓存穿透

文章插图
1、引入pom
<!--guava Google 开源的 Guava 中自带的布隆过滤器--><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>23.0</version></dependency>2、创建布隆过滤器BloomFilter<Integer> bloomFilter = BloomFilter.create(Funnels.integerFunnel(), 100);布隆过滤器中添加元素 。bloomFilter.mightContain(1)判断布隆过滤器中是否存在 。bloomFilter.mightContain(1)3、fpp误判率@Service@Slf4jpublic class GuavaBloomFilterService {public static final int SIZE = 1000000;//误判率public static double fpp = 0.01;//创建guava布隆过滤器private static BloomFilter<Integer> bloomFilter = BloomFilter.create(Funnels.integerFunnel(), SIZE, fpp);public void guavaBloomFilter() {for (int i = 1; i <= SIZE; i++) {bloomFilter.put(i);}ArrayList<Integer> list = new ArrayList<>(10000);for (int i = SIZE + 1; i <= SIZE + (10000); i++) {if (bloomFilter.mightContain(i)) {log.info("被误判了:{}", i);list.add(i);}}log.info("误判总数量:{}", list.size());}}六、Redis缓存击穿Redis缓存击穿是指在Redis缓存系统中,由于某些原因,缓存的数据无法被正常访问或处理,导致缓存失去了它的作用 。1、什么情况会发生缓存击穿?根本原因:热点Key失效 。
(1)数据量过大当缓存中存储的数据量过大时,缓存的数据量可能会超过Redis的数据存储限制,从而导致缓存失去了它的作用 。
(2)数据更新频繁当缓存中存储的数据更新频繁时,缓存的数据可能会出现异步的变化,导致缓存无法被正常访问 。
(3)数据过期当缓存中存储的数据过期时,缓存的数据可能会失去它的作用,因为Redis会在一定时间后自动将过期的数据删除 。
(4)数据权限限制当缓存中存储的数据受到权限限制时,只有拥有足够权限的用户才能访问和处理这些数据,从而导致缓存失去了它的作用 。
(5)Redis性能瓶颈当Redis服务器的性能达到极限时,Redis缓存可能会因为响应过慢而导致击穿 。
2、如何避免Redis缓存击穿?(1)设置合理的缓存大小根据实际需求设置合理的缓存大小,以避免缓存穿透 。
(2)优化数据结构根据实际需求优化数据结构,以减少数据的大小和更新频率 。
(3)设置合理的过期时间设置合理的过期时间,以避免缓存失去它的作用 。
(4)增加Redis的并发处理能力通过增加Redis的并发处理能力,以提高缓存的处理能力和响应速度 。
(5)优化Redis服务器的硬件和软件配置通过优化Redis服务器的硬件和软件配置,以提高Redis的性能和处理能力 。
七、Redis缓存击穿解决方案1、互斥更新通过双检加锁机制 。
2、差异失效时间

文章插图
先更新从缓存B,再更新主缓存A,而且让从缓存B的缓存失效时间长于A,保证A失效时,B还在 。
推荐阅读
- 雕刻|藏传里不起眼的小玩意,包浆一绝还不要钱!
- 校园招聘|这破班一天也不想上了,女生晒上班前后对比照,颜值惨遭滑铁卢
- 文玩|这3种“破玩意”10块钱一公斤,别瞧不起,包浆后真美!
- 文玩|文玩人你的玩意怎么越来越多?
- 核磁共振是什么(核磁共振什么玩意)
- 什么玩意儿(什么玩意儿视频是谁)
- 紫藤图片大全大图.这两种植物是啥玩意儿
- 玛玛哈哈是什么玩意 奥兹玛三牛是什么意思
- 好玩意什么意思 好玩意
- 小S|小S曝具俊晔送姐姐情人节礼物!奢华,限量,网友吐槽:什么玩意!
