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 等等。

相关推荐
m0_62457859几秒前
PHP源码能否在无盘工作站运行_网络启动硬件要求【说明】
jvm·数据库·python
Elastic 中国社区官方博客1 分钟前
Elasticsearch ES|QL “读取时模式”:你的未映射字段一直都在那里
大数据·数据库·sql·elasticsearch·搜索引擎·全文检索
yexuhgu2 分钟前
CSS Grid布局如何实现项目重叠效果_利用z-index与grid-area实现
jvm·数据库·python
Elastic 中国社区官方博客3 分钟前
Elasticsearch 查询日志:每个查询一行协调器级别日志,适用于 ES|QL、DSL、SQL 和 EQL
大数据·数据库·sql·elasticsearch·搜索引擎·全文检索·可用性测试
许长安4 分钟前
RingBuffer:面向网络编程的环形缓冲区实现
服务器·网络·c++·经验分享·笔记·缓存
爱码小白4 分钟前
MySQL易忘知识点梳理
数据库·mysql
战南诚6 分钟前
mysql - 行列数据转换技巧
数据库·mysql
m0_596749098 分钟前
SQL统计分组内的所有数据唯一值_使用DISTINCT汇总
jvm·数据库·python
m0_6091604910 分钟前
Golang项目目录结构如何组织_Golang项目结构教程【核心】
jvm·数据库·python
Cloud云卷云舒13 分钟前
【由云向算】AI原生数据库-海山数据库技术沙龙
数据库·ai-native·移动云·智算·智能云