redis与mysql数据库数据双写不一致如何解决?

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介: redis与mysql数据库数据双写不一致如何解决?

一、高并发执行


1.1 正常情况下


c7526ea980be41d7aebdcdb75998403d.png


程序没有问题!!!


1.2 网络卡顿 时间延迟


928f5413d74949a494e3ffa0cc7a3321.png


数据库真正的结果为6,但是最后改为了10,发现了数据不一致性。


二 解决办法


2.1 写完删除缓存,每次查询数据库


b4b1fc334ab0488f8ec97fdda67247b6.png

f0aab681a2ac4a44bfbe26a7886ca438.png

又发生了问题!!!

fc05d58bef604ea5b5422c3cc67accee.png


2.2 延迟双删【不考虑】

f30896f929b44f1fab1139d717264c49.png


不太确定sleep的时间不确定,不稳定,不能100%解决,延迟很高!!!!吞吐量低!!!


2.3 内存队列【不推荐】


对基于同一个Key的增删改查操作,放到一个内存队列里面,可以解决

性能:麻烦,效率低,并行的任务,串行化了


2.4 加锁操作【推荐】


问题解决:有别的线程来执行,必须等待锁的释放

全部操作,做了一个排队操作,100%不会出现错误

问题:效率低!!!!!

解决:分布式锁,性能低,没办法用,在并发场景下


2.5 Redisson读写锁【强力推荐ReadWriteLock】


读锁与读锁之间不互斥 ,可以并发执行

写锁与写锁会发生互斥,不可以并行

并发场景下,80%场景会发生读操作,20%会发生写操作

底层页实现了LUA脚本


适用于:读多写少的场景

2.6 读多写多的场景

目录
相关文章
|
4月前
|
缓存 NoSQL 关系型数据库
MySQL 与 Redis 如何保证双写一致性?
我是小假 期待与你的下一次相遇 ~
509 7
|
5月前
|
存储 NoSQL Redis
阿里云高性能数据库Tair(兼容 Redis)收费价格,稳定可靠成本低
阿里云高性能云数据库Tair兼容Redis,提供Redis开源版和Tair企业版,支持多种存储介质与灵活扩展,适用于高并发场景。Tair具备亚毫秒级稳定延迟,保障业务连续性。价格方面,Redis开源版年费从72元起,Tair企业版年费从1224元起,具体费用根据配置不同有所变化。
|
4月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
617 5
|
5月前
|
数据采集 关系型数据库 MySQL
python爬取数据存入数据库
Python爬虫结合Scrapy与SQLAlchemy,实现高效数据采集并存入MySQL/PostgreSQL/SQLite。通过ORM映射、连接池优化与批量提交,支持百万级数据高速写入,具备良好的可扩展性与稳定性。
|
6月前
|
存储 数据管理 数据库
数据字典是什么?和数据库、数据仓库有什么关系?
在数据处理中,你是否常困惑于字段含义、指标计算或数据来源?数据字典正是解答这些问题的关键工具,它清晰定义数据的名称、类型、来源、计算方式等,服务于开发者、分析师和数据管理者。本文详解数据字典的定义、组成及其与数据库、数据仓库的关系,助你夯实数据基础。
数据字典是什么?和数据库、数据仓库有什么关系?
|
5月前
|
人工智能 Java 关系型数据库
使用数据连接池进行数据库操作
使用数据连接池进行数据库操作
156 11
|
6月前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
509 10
|
6月前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL数据库的WAL日志与数据写入的过程
PostgreSQL中的WAL(预写日志)是保证数据完整性的关键技术。在数据修改前,系统会先将日志写入WAL,确保宕机时可通过日志恢复数据。它减少了磁盘I/O,提升了性能,并支持手动切换日志文件。WAL文件默认存储在pg_wal目录下,采用16进制命名规则。此外,PostgreSQL提供pg_waldump工具解析日志内容。
599 0
|
7月前
|
SQL 存储 缓存
MySQL 如何高效可靠处理持久化数据
本文详细解析了 MySQL 的 SQL 执行流程、crash-safe 机制及性能优化策略。内容涵盖连接器、分析器、优化器、执行器与存储引擎的工作原理,深入探讨 redolog 与 binlog 的两阶段提交机制,并分析日志策略、组提交、脏页刷盘等关键性能优化手段,帮助提升数据库稳定性与执行效率。
189 0

推荐镜像

更多