缓存中存在的三个问题及相关图解(图示解决方式) redis


正常的缓存,查到返回,查不到就null的,而没有缓存key,持续大量请求,都查询到数据库了。
这个也类似网页端的DDOS攻击

时间太久远差点记不起来了。

类似这样的攻击,都与缓存中第一个问题还是有相似之处,因为都是恶意人为的攻击。

缓存穿透
(根据某个key查不到缓存的数据,用户不会一直请求,额外情况是也许不是恶意的,比如taobao的秒杀活动和其它优惠限时限量活动,12306的抢票,用户还是需要刷网页或者刷某个接口的)

第一种缓存问题 缓存穿透的解决方式

TTL:

当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,以毫秒为单位,返回 key 的剩余生存时间。

注意:在 Redis 2.8 以前,当 key 不存在,或者 key 没有设置剩余生存时间时,命令都返回 -1 。

redis> FLUSHDB
OK

redis> TTL key
(integer) -2


# key 存在,但没有设置剩余生存时间

redis> SET key value
OK

redis> TTL key
(integer) -1


# 有剩余生存时间的 key

redis> EXPIRE key 10086
(integer) 1

redis> TTL key
(integer) 10084

ps:话说有些教程网站上的编辑啊真不用心

推荐的redis教程还是cn官方好 https://www.redis.net.cn/

缓存的第二个问题
缓存雪崩

缓存雪崩的问题就是说很多TTL设定的规格一致,失效时都失效,造成数据库的大面积压力
解决方式是错开TTL设定的时长

3
缓存击穿

缓存击穿是说,这个key有,但是一旦过期失效时,特大量请求贯穿而入,导致数据库的压力
“在一张薄膜纸上凿出了一个洞🕳️”
解决方式:设定这个热点的key 不过期

posted @   ukyo--碳水化合物  阅读(133)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
历史上的今天:
2019-12-30 WhatsLearn
2019-12-30 MPush - 一款下发消息的开源推送系统
2019-12-30 sql - mybatis的动态字段insert和IFNULL结合where使用实践
主题色彩
点击右上角即可分享
微信分享提示
成熟不是心变老,是泪在打转还能微笑。