ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

redis缓存问题的解决方案

2021-11-15 14:33:57  阅读:146  来源: 互联网

标签:缓存 解决方案 数据库 redis 击穿 穿透 雪崩 数据


击穿、雪崩和穿透

击穿

缓存击穿是指缓存中没有但数据库中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大,造成过大压力。

雪崩

缓存雪崩是指缓存中数据大批量到过期时间,而查询数据量巨大,引起数据库压力过大甚至down机。和缓存击穿不同的是, 缓存击穿指并发查同一条数据,缓存雪崩是不同数据都过期了,很多数据都查不到从而查数据库。

穿透

缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起为id为“-1”的数据或id为特别大不存在的数据。这时的用户很可能是攻击者,攻击会导致数据库压力过大。

击穿解决

1.设置永不过期。(粗暴)
2.增加互斥锁。单线程更新缓存。demo如下(copy的)
在这里插入图片描述

雪崩解决

1.在固定过期时间上加随机时间(如5+random(2));
2.建立备份缓存,缓存A和缓存B,A设置超时时间,B不设值超时时间,先从A读缓存,A没有读B,并且更新A缓存和B缓存;

穿透解决

1.数据不存在的,查询时写Null到缓存,并设置较短的过期时间。(简单粗暴)。
2.用布隆过滤器过滤不存在的key直接返回null。

标签:缓存,解决方案,数据库,redis,击穿,穿透,雪崩,数据
来源: https://blog.csdn.net/weixin_44101948/article/details/121333349

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有