原文网址:Redis--缓存穿透--含义/原因/解决方案_IT利刃出鞘的博客-CSDN博客
简介
本文介绍Redis的缓存穿透,包括:含义、原因、解决方案。
含义
说明
缓存穿透是指查询一个根本不存在的数据,缓存层没有命中,然后去查数据库(持久层),数据库(持久层)也没有命中。通常如果从存储层查不到数据则不写入缓存层。
比如:用户不断发起请求,通过文章的id来获取文章,如果这个id没有对应的数据,则每次都会请求到数据库。如果这个用户是攻击者,在请求过多时会导致数据库压力过大,严重会击垮数据库。
正常的操作流程
1) 缓存层不命中。
2) 存储层不命中,不将空结果写回缓存。
3) 返回空结果。
后果
缓存穿透将导致不存在的数据每次请求都要到存储层去查询,失去了缓存保护后端存储的意义。
缓存穿透问题可能会使后端数据库负载加大,由于很多数据库不具备高并发性,所以可能造成数据库宕掉。
通常可以在程序中分别统计总调用数、缓存层命中数、存储层命中数,如果发现大量存储层空命中,可能就是出现了缓存穿透问题。
上边只是部分内容,为便于维护,本文已迁移到此地址:Redis-缓存穿透-含义/原因/解决方案 - 自学精灵