博客
关于我
缓存穿透 / 缓存击穿 / 缓存雪崩 / 缓存一致性
阅读量:357 次
发布时间:2019-03-05

本文共 404 字,大约阅读时间需要 1 分钟。

先介绍这些概念:

  • 缓存穿透: 请求不存在的数据, 缓存中没有查到, 会去数据库中查找
  • 缓存击穿: 数据较为热点, 当 key 过期时, 同一时刻, 大量请求进来, 此时缓存还未存入, 请求都落到数据库查找
  • 缓存雪崩: 同一时刻, 大量设置过期时间的 key 失效
  • 缓存一致性: 缓存和数据库数据不一致

解决办法:

  • 缓存穿透: 把这些不存在的数据也缓存起来, 值为 null, 设置较短的过期时间 (例如 30s), 避免攻击者恶意请求不存在的数据, 给数据库造成压力
  • 缓存击穿: 有 2 种方式
    • 设置热点数据永不过期
    • 加锁, 锁的内容是查询 redis / 查询数据库 / 存入 redis
  • 缓存雪崩: 过期时间设置随机系数, 避免大量 key 同时过期
  • 缓存一致性: 大多数情况下, 操作完数据库后, 删除或者更新缓存即可. 一致性要求高的, 考虑使用 binlog 订阅 mysql 的 canal 实现

转载地址:http://dtcg.baihongyu.com/

你可能感兴趣的文章
Java面向对象
查看>>
JAVA带标签的break和continue
查看>>
Java获取线程基本信息的方法
查看>>
vue源码分析(MVVM篇)
查看>>
设计模式之组合模式
查看>>
(Python学习笔记):字典
查看>>
(C++11/14/17学习笔记):线程启动、结束,创建线程多法、join,detach
查看>>
leetcode 14 最长公共前缀
查看>>
做做Java
查看>>
C++并发与多线程(一)
查看>>
计算机网络子网划分错题集
查看>>
java一些基本程序
查看>>
vue-依赖-点击复制
查看>>
LeetCode 116填充每个节点的下一个右侧结点指针
查看>>
2021-4-28【PTA】【L2-1 包装机 (25 分)】
查看>>
Arduino mega2560+MPU6050利用加速度值控制舵机
查看>>
紫书——蛇形填数
查看>>
A Guide to Node.js Logging
查看>>
webwxbatchgetcontact一个神奇的接口
查看>>
Edge浏览器:你的的内核我的芯
查看>>