# Redis与数据库一致性补充

图片

最近发现还有一种思路,在这里记录一下

# 介绍

之前我们的操作都是这样

  • 读取操作先从缓存取数据,没有,则从数据库中取数据,成功后,放到缓存中
  • 更新操作就是操作数据库和缓存

现在改成这样

  • 读取操作先从缓存取数据,没有,则从数据库中取数据,成功后,不负责回写缓存
  • 更新操作就是更新数据库,删除缓存(或删除缓存,更新数据库),发送缓存刷新消息
  • 然后有一个独立模块去消费消息,异步完成缓存刷新

还可以采用消费数据库Binlog的方式

  • 读取操作先从缓存取数据,没有,则从数据库中取数据,成功后,不负责回写缓存
  • 更新操作就是更新数据库,删除缓存(或删除缓存,更新数据库)
  • 然后有一个独立模块去消费数据库Binlog,异步完成缓存刷新

# 总结

感觉这样容易让出现读取操作Cache Miss,容易击穿DB,只是记录一下

还有一种方式可以确保DB和Redis中缓存同一时间强一致,使用了锁,性能吞吐量有下降,有兴趣可以看下: 聊聊db和缓存一致性常见的实现方式 (opens new window)

# 参考

上次更新时间: 2022-05-24 07:43:59