redis 如何保证缓存和数据库一致性?解决策略如下

Redis 与数据库的数据保持一致,传统策略是先读缓存,未命中则读数据库并回填缓存,但方式这种维护成本较高。

下面是几种传统常见的策略及其优缺点:

【策略1】先写 MySQL。成功后,更新或删除 Redis 中的对应数据。

  • 优点:简单易实现。
  • 缺点:存在短暂的不一致。

【策略2】先写 Redis。异步或定时将Redis数据同步到 MySQL。

  • 优点:提升写性能。
  • 缺点:同步延迟可能导致数据丢失。

【策略3】读 Redis,命中则返回,未命中则读 MySQL,并将结果写入 Redis。

  • 优点:减少 MySQL 压力。
  • 缺点:存在短暂的不一致。

【策略4】数据同步写入 MySQL 后,发送消息到消息队列,消费者读取消息并更新 Redis。

  • 优点:解耦,提升可靠性。
  • 缺点:系统复杂度增加。

【策略5】为 Redis 数据设置过期时间,过期后重新从 MySQL 加载。

  • 优点:自动处理不一致。
  • 缺点:过期时间内可能存在不一致。

传统策略(Redis+MySQL)的形式往往需要技术人员定期维护。

目前国内云厂商数据库很多采用磁盘 kv 存储,内存 + 磁盘结合的方式,比如百度智能云 PegaDB、阿里磁盘型 Tair 等等。

相关推荐
max5006002 分钟前
基于最大似然估计的卡尔曼滤波与自适应模糊PID控制的单片机实现
数据库·python·单片机·深度学习·mongodb·机器学习·transformer
Lovyk8 分钟前
Linux 防火墙管理
linux·服务器·数据库
小白跃升坊2 小时前
MaxKB 使用 MCP 连接 Oracle (免安装 cx_Oracle 和 Oracle Instant Client)
数据库·oracle·maxkb·mcp
sonrisa_3 小时前
虚拟机磁盘扩容
数据库
代码的余温3 小时前
Redis Stream:高性能消息队列核心原理揭秘
数据库·redis·bootstrap
啊森要自信3 小时前
【QT】常⽤控件详解(四)常用显示类控件类 Label && LCDNumber && ProgressBar && Calendar Widget
开发语言·数据库·c++·qt·qt6.3
码明8 小时前
42.MySQL视图
数据库·oracle
山茶花开时。8 小时前
[Oracle] TO_NUMBER()函数
数据库·oracle
超龄超能程序猿9 小时前
闸机控制系统从设计到实现全解析:第 4 篇:Redis 缓存与分布式锁实现
redis·分布式·缓存
AA-代码批发V哥9 小时前
Redis之Set和SortedSet类型常用命令
redis