前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL 03 - 缓存穿透和缓存雪崩

SQL 03 - 缓存穿透和缓存雪崩

作者头像
Reck Zhang
发布2021-08-11 12:01:18
3850
发布2021-08-11 12:01:18
举报
文章被收录于专栏:Reck Zhang

缓存穿透和缓存雪崩

缓存穿透

概念

缓存穿透是指查询一个一定不存在的数据, 由于缓存不命中, 并且出于容错考虑, 如果从存储层查不到数据则不写入缓存, 这将导致这个不存在的数据每次请求都要到存储层去查询, 失去了缓存的意义.

解决方法

  1. 利用互斥锁, 缓存失效的时候, 先去获得锁, 得到锁后再去访问数据库. 这样的问题在于降低了数据库的吞吐量.
  2. 采用异步更新策略, 无论key是否取到了值, 都直接返回. value值中去维护一个失效时间, 如果缓存失效, 那么异步启动一个线程去数据库中访问, 更新缓存. 这需要对缓存进行预热.
  3. 提供一个拦截机制, 内部维护一系列合法有效的key, 然后判断所携带的key是否有效.

缓存雪崩

概念

当缓存服务器重启或者大量缓存集中在一个时间段内失效, 这时候大量请求会直接到数据库中, 导致数据库连接异常.

解决方法

  1. 给缓存的失效时间加上随机值, 防止集中失效.
  2. 对数据库的访问加入互斥锁, 但是这样会降低数据库的吞吐量.
  3. 设置二级缓存. A为原始缓存, B为拷贝缓存. 当A的缓存失效时, 可以访问B, 并直接返回, 再异步开一个线程去更新A和B中的value.
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-08-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 缓存穿透和缓存雪崩
    • 缓存穿透
      • 概念
      • 解决方法
    • 缓存雪崩
      • 概念
      • 解决方法
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档