MySQL 系统学习 第六阶段:Redis + 缓存 + 高并发设计 第四章:企业缓存设计
一、什么是缓存缓存Cache把访问频繁的数据存放到读取速度更快的地方减少数据库访问。例如用户 │ ▼ Redis缓存 │ 未命中 ▼ MySQL二、为什么需要缓存假设商品详情一天更新一次。每天100 万次访问如果全部查询 MySQL100 万次 SQL如果使用 Redis第一次Redis 没有 ↓ MySQL ↓ Redis之后Redis ↓ 返回数据数据库压力大幅降低。三、什么是 Cache Aside旁路缓存⭐⭐⭐⭐⭐企业最常用的缓存模式。读流程查询 Redis ↓ 有数据 ↓ 直接返回 ↓ 没有数据 ↓ 查询 MySQL ↓ 写入 Redis ↓ 返回数据写流程修改 MySQL ↓ 删除 Redis 缓存注意不是先更新 Redis而是删除缓存。四、为什么修改数据后要删除缓存例如用户信息TomRedisuser:1 TomMySQLTom现在修改Tom ↓ Jack正确流程更新 MySQL ↓ 删除 Redis ↓ 下次查询 ↓ 重新写入 Redis保证缓存最终是最新数据。五、什么是缓存一致性缓存一致性Redis 和 MySQL 中的数据保持一致。例如MySQLJackRedisTom这就是缓存不一致。企业目标尽量保证Redis MySQL六、为什么不直接更新 Redis例如同时两个请求A修改数据 B查询数据如果直接更新 Redis可能出现数据覆盖等问题。因此企业通常采用更新 MySQL ↓ 删除 Redis让下次查询重新加载。七、为什么缓存需要设置过期时间TTL如果缓存永不过期Redis ↓ 一直保存旧数据可能导致长期数据不一致。例如SET user:1 Tom EX 3600表示1 小时后自动过期八、缓存命中与缓存未命中缓存命中Hit查询 Redis ↓ 找到数据缓存未命中Miss查询 Redis ↓ 没有数据 ↓ 查询 MySQL企业希望缓存命中率越高越好。九、哪些数据适合缓存适合商品详情用户信息首页数据分类列表热门文章特点读取多更新少十、哪些数据不适合缓存例如实时库存银行余额正在支付中的订单特点更新频繁一致性要求高一般直接查询数据库或采用更复杂的缓存策略。十一、缓存更新策略企业常见策略是否推荐更新 MySQL → 删除 Redis✅ 推荐更新 MySQL → 更新 Redis❌ 不推荐先更新 Redis → 再更新 MySQL❌ 不推荐十二、缓存流程总结读取用户 ↓ Redis ↓ 没有 ↓ MySQL ↓ Redis ↓ 返回更新修改 MySQL ↓ 删除 Redis十三、本章总结知识点作用缓存提高访问速度Cache Aside企业最常用缓存模式缓存命中直接返回 Redis 数据缓存未命中查询 MySQL 并写入 Redis缓存一致性保持 Redis 与 MySQL 数据一致TTL防止缓存长期不更新本章一句话总结企业缓存的核心原则是读数据先查 Redis写数据先更新 MySQL再删除 Redis 缓存。思考题精简回答为什么企业需要缓存而不是所有请求都直接查询 MySQL因为 Redis 读取速度更快可以减少 MySQL 的查询压力提高系统性能和并发能力。Cache Aside 的读流程和写流程分别是什么读流程查 Redis → 有数据直接返回 → 没有数据查 MySQL → 写入 Redis → 返回数据写流程更新 MySQL → 删除 Redis 缓存为什么企业推荐更新 MySQL 后删除 Redis而不是直接更新 Redis因为删除缓存实现更简单也能减少缓存和数据库数据不一致的问题。下次查询时会自动从 MySQL 加载最新数据。什么是缓存命中Cache Hit和缓存未命中Cache MissCache Hit缓存命中在 Redis 中找到数据直接返回Cache Miss缓存未命中Redis 中没有数据需要查询 MySQL。为什么缓存通常需要设置过期时间TTL防止缓存长期保存旧数据保证缓存能够自动更新提高数据一致性。商品详情和银行余额哪一个更适合使用 Redis 缓存为什么商品详情更适合。因为商品详情读取多、更新少而银行余额更新频繁对数据一致性要求极高不适合直接缓存。