缓存中存在的三个问题及相关图解(图示解决方式) redis
正常的缓存,查到返回,查不到就null的,而没有缓存key,持续大量请求,都查询到数据库了。
这个也类似网页端的DDOS攻击
时间太久远差点记不起来了。
类似这样的攻击,都与缓存中第一个问题还是有相似之处,因为都是恶意人为的攻击。
缓存穿透
(根据某个key查不到缓存的数据,用户不会一直请求,额外情况是也许不是恶意的,比如taobao的秒杀活动和其它优惠限时限量活动,12306的抢票,用户还是需要刷网页或者刷某个接口的)
当 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
推荐的redis教程还是cn官方好 https://www.redis.net.cn/
缓存的第二个问题
缓存雪崩
缓存雪崩的问题就是说很多TTL设定的规格一致,失效时都失效,造成数据库的大面积压力
解决方式是错开TTL设定的时长
3
缓存击穿
缓存击穿是说,这个key有,但是一旦过期失效时,特大量请求贯穿而入,导致数据库的压力
“在一张薄膜纸上凿出了一个洞🕳️”
解决方式:设定这个热点的key 不过期
作者:ukyo--碳水化合物
出处:https://www.cnblogs.com/ukzq/p/15748026.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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使用实践