当前位置:网站首页>redis中常见的问题(缓存穿透,缓存雪崩,缓存击穿,redis淘汰策略)
redis中常见的问题(缓存穿透,缓存雪崩,缓存击穿,redis淘汰策略)
2022-08-04 00:38:00 【Have_MonkeyG】
一、缓存穿透
1.什么是缓存穿透?
数据库中没有该记录,缓存中也没有该记录,这时由人恶意大量访问这样的数据。这样就会导致该请求绕过缓存,直接访问数据,从而造成数据库压力过大。
2.解决方案:
[1]在controller加数据校验。
[2]我们可以在redis中存入一个空对象,而且要设置过期时间不能太长。超过5分钟
[3]我们使用布隆过滤器。底层:有一个bitmap数组,里面存储了该表的所有id.
需要重点说的是布隆过滤器
布隆过滤器:
//伪代码
String get(String key) { //布隆过滤器钟存储的是数据库表钟对应的id
String value = redis.get(key); //先从缓存获取。
if (value == null) { //缓存没有命中
if(!bloomfilter.mightContain(key)){//查看布隆过滤器钟是否存在
return null;
}else{
value = db.get(key); //查询数据库
redis.set(key, value);
}
}
return value;
}二、缓存雪崩
1.什么是缓存雪崩?
缓存雪崩是指缓存中数据大批量到过期时间,而查询数据量巨大,引起数据库压力过大甚至down机。和缓存击穿不同的是, 缓存击穿指并发查同一条数据,缓存雪崩是不同数据都过期了,很多数据都查不到从而查数据库。
2.为什么会发生雪崩?
[1]项目刚上线,缓存中没有任何数据
[2]缓存出现大量过期。
[3]redis宕机
3.解决方案:
1.上线前预先把一些热点数据放入缓存。
2.设置过期时间为散列值
3.搭建redis集群
三、缓存击穿
1.什么是缓存击穿?
缓存击穿是指缓存中没有但数据库中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大,造成过大压力。
2.解决方案:
1.设置永久不过期。【这种只适合内存】
2.使用互斥锁(mutex key)业界比较常用的做法。

四、Redis 淘汰策略

边栏推荐
- Justin Sun: Web3.0 and the Metaverse will assist mankind to enter the online world more comprehensively
- 建木DevOps流程的快速运用
- After building the pytorch environment, the pip and conda commands cannot be used
- typescript55-泛型约束
- 面试必问的HashCode技术内幕
- BioVendor人Clara细胞蛋白(CC16)Elisa试剂盒检测步骤
- 【超详细】手把手教你搭建MongoDB集群搭建
- typescript55 - generic constraints
- A Preliminary Study of RSS Subscription to WeChat Official Account-feed43
- Sqlnet. Ora file with the connection of authentication test
猜你喜欢

114. 如何通过单步调试的方式找到引起 Fiori Launchpad 路由错误的原因

【性能优化】MySQL性能优化之存储引擎调优

微服务的简单介绍

Install third-party packages via whl

C# wpf使用ffmpeg命令行实现录屏

Tanabata festival coming, VR panoramic look god assists for you

After building the pytorch environment, the pip and conda commands cannot be used

Justin Sun was invited to attend the 36氪 Yuan Universe Summit and delivered a keynote speech

Salesforce's China business may see new changes, rumors may be closing

JVM垃圾回收总结(未完待续)
随机推荐
咱们500万条数据测试一下,如何合理使用索引加速?
typescript58-泛型类
nodeJs--async/await
jmeter跨平台运行csv等文件
【面经】被虐了之后,我翻烂了equals源码,总结如下
【虚拟化生态平台】虚拟化平台esxi挂载USB硬盘
做项目一定用得到的NLP资源【分类版】
手撕Gateway源码,今日撕工作流程、负载均衡源码
SQL优化的一些建议,希望可以帮到和我一样被SQL折磨的你
数据库扩容也可以如此丝滑,MySQL千亿级数据生产环境扩容实战
MPLS Comprehensive Experiment
Google Earth Engine - Calculates the effective width of rivers using publicly available river data
七夕佳节即将来到,VR全景云游为你神助攻
c语言分层理解(c语言操作符)
fsdbDump用法
DataBinding下的RecycleView适配器Adapter基类
现货白银需要注意八大事项
Modulo operation (MOD)
2023年第六届亚太应用数学与统计学国际会议(AMS 2023)
扩展卡尔曼滤波EKF