温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Redis如何与数据库协同工作

发布时间:2026-07-02 01:56:34 来源:亿速云 阅读:81 作者:小樊 栏目:关系型数据库

Redis 与数据库协同工作,核心目标是用 Redis 做高速缓存 / 辅助存储,用数据库做持久化、权威数据源。下面从常见架构、数据同步方式、典型场景、一致性问题、最佳实践几个方面系统说明。


一、Redis 与数据库的典型协同模式

1️⃣ Cache Aside(旁路缓存)【最常用】

架构思想:

  • 数据库是唯一权威数据源
  • Redis 只是缓存层
  • 应用同时访问 Redis 和数据库

读流程:

1. 先查 Redis
   - 有 → 直接返回
2. 没有 → 查数据库
   - 查到 → 写入 Redis → 返回
   - 没查到 → 返回空

写流程:

1. 更新数据库
2. 删除 Redis 缓存(不是更新)

为什么删除而不是更新缓存?

  • 避免并发写导致缓存不一致
  • 删除实现简单,失败影响小

这是生产环境最推荐模式


2️⃣ Read/Write Through(缓存穿透模式)

特点:

  • 应用只操作缓存
  • 缓存负责和数据库同步

Write Through:

  • 写缓存 → 缓存同步写数据库

Read Through:

  • 缓存未命中 → 缓存自动加载数据库数据

❌ 缺点:

  • Redis 本身不支持这种机制
  • 需要额外中间件或客户端封装

✅ 多用于本地缓存(如 Guava、Caffeine)


3️⃣ Write Behind(异步写回)

流程:

  • 写 Redis 立即返回
  • 异步批量写数据库

✅ 优点:

  • 写入性能极高

❌ 缺点:

  • 数据一致性和可靠性风险大
  • Redis 宕机可能丢数据

✅ 适合日志、计数、统计类数据


二、Redis + 数据库的协作流程图(Cache Aside)

客户端请求
    ↓
[ Redis ]
  ↓ hit → 返回数据
  ↓ miss
[ Database ]
  ↓
写入 Redis
  ↓
返回数据

三、典型应用场景

✅ 1. 热点数据缓存

  • 用户信息
  • 商品详情
  • 配置信息
DB: MySQL / PostgreSQL
Cache: Redis String / Hash

✅ 2. 计数与统计

  • 点赞数
  • 浏览量
  • 库存扣减
Redis: INCR / DECR
DB: 异步落库

✅ 3. 分布式锁

Redis: SETNX / RedLock
DB: 保证最终一致性

✅ 4. 会话(Session)管理

Redis: 存 session
DB: 用户基础信息

✅ 5. 消息队列解耦

Redis: List / Stream
DB: 消费者落库

四、数据一致性问题(重点)

1️⃣ 缓存与数据库不一致的常见原因

  • 并发读写
  • 先更新缓存再更新数据库
  • 删除缓存失败
  • 数据库主从延迟

2️⃣ 推荐一致性策略

Cache Aside + 延迟双删

1. 删除缓存
2. 更新数据库
3. 延迟几百毫秒再删一次缓存

设置合理的 TTL

即使不一致,也会自动过期

避免“更新缓存”

更新数据库 + 删除缓存

五、Redis 与数据库的技术分工

能力 Redis 数据库
延迟 微秒级 毫秒级
持久化
事务 有限
查询能力 简单 复杂
数据规模

结论:

Redis 负责“快”,数据库负责“准”


六、常见错误做法 ❌

❌ 把 Redis 当主数据库
❌ 缓存和数据库双向更新
❌ 缓存永不过期(无 TTL)
❌ 忽略缓存穿透 / 击穿 / 雪崩


七、生产级最佳实践 ✅

  • 使用 Cache Aside
  • 写操作:先 DB,再删缓存
  • 读操作:先缓存,再 DB
  • 设置 TTL
  • 对空值缓存(防穿透)
  • 热点 Key 加互斥锁(防击穿)
  • 缓存 Key 设计清晰(业务:类型:id)

八、一句话总结

Redis 与数据库协同的核心:Redis 做加速层,数据库做权威层,通过“缓存旁路 + 删除缓存 + TTL”保证高性能与一致性。

如果你愿意,我可以:

  • 画一张 时序图
  • 给你 Java / Go / Python 示例代码
  • 针对 电商 / 社交 / 订单系统讲具体方案
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI