【Redis】高效保障MySQL和Redis的数据一致性?

高效保障MySQL和Redis的数据一致性?

在满足实时性的条件下,不存在两者完全保存一致的方案,只有最终一致性方案。根据网上的众多解决方案,总结出 6 种,直接看目录:

【Redis】高效保障MySQL和Redis的数据一致性?_第1张图片

不好的方案

1、先写 MySQL,再写 Redis
【Redis】高效保障MySQL和Redis的数据一致性?_第2张图片

如图所示:

这是一副时序图,描述请求的先后调用顺序;

橘黄色的线是请求 A,黑色的线是请求 B;

橘黄色的文字,是 MySQL 和 Redis 最终不一致的数据;

数据是从 10 更新为 11;

后面所有的图,都是这个含义,不再赘述。

请求 A、B 都是先写 MySQL,然后再写 Redis,在高并发情况下,如果请求 A 在写 Redis 时卡了一会,请求 B 已经依次完成数据的更新,就会出现图中的问题。

这个图已经画得很清晰了,我就不用再去啰嗦了吧,不过这里有个前提,就是对于读请求,先去读 Redis,如果没有,再去读 DB,但是读请求不会再回写 Redis。大白话说一下,就是读请求不会更新 Redis。

2、先写 Redis,再写 MySQL

你可能感兴趣的:(Redis,MySQL,技术研发,redis,mysql,数据库)