缓存异常与一致性

  • 缓存异常:
    • 缓存穿透:请求缓存和数据库都不存在的数据,每次都要查数据库,缓存好像没有起到拦截流量作用。
      • 采用布隆过滤器过滤一定不存在key请求、key逻辑校验,不存在key请求设置缓存key-null
      • 布隆过滤器采用多个hash函数,若请求的key的多个hash值都存在,则可能存在,否则一定不存在
    • 缓存击穿:缓存热key过期,导致大量请求打到数据库上
      • 采用热key续期,重建缓存加互斥锁
    • 缓存雪崩:大量缓存key过期,大量请求打到数据库
      • 采用过期时间设置随机,防止同时大量缓存过期
  • 缓存一致性:
    • 更新mysql后,不管redis,由过期时间兜底
    • 更新mysql后也写入redis,可能有时序性问题,更常用直接删除,下次再加载缓存
    • 通过消息队列订阅mysql的binlog,实现缓存一致性,适用于缓存基本不过期时间的场景
相关推荐
ChinaRainbowSea3 小时前
7. LangChain4j + 记忆缓存详细说明
java·数据库·redis·后端·缓存·langchain·ai编程
失散138 小时前
分布式专题——5 大厂Redis高并发缓存架构实战与性能优化
java·redis·分布式·缓存·架构
十八旬10 小时前
苍穹外卖项目实战(day7-1)-缓存菜品和缓存套餐功能-记录实战教程、问题的解决方法以及完整代码
java·数据库·spring boot·redis·缓存·spring cache
MAGICIAN...14 小时前
【Redis五种数据类型】
数据库·redis·缓存
酷ku的森19 小时前
Redis中的Zset数据类型
数据库·redis·缓存
利刃大大1 天前
【高并发内存池】五、页缓存的设计
c++·缓存·项目·内存池
Heliotrope_Sun1 天前
Redis
数据库·redis·缓存
上官浩仁1 天前
springboot redisson 缓存入门与实战
spring boot·redis·缓存
络71 天前
Redis 非缓存核心场景及实例说明
数据库·redis·缓存