Redis和MySQL如何保证一致性

Redis和MySQL如何保证一致性。小编来告诉你更多相关信息。Redis和MySQL如何保证一致性网小编为你介绍Redis和MySQL如何保证一致性的相关介绍,接下来带大家一起了解。可以采用「先更

Redis和MySQL如何保证一致性。小编来告诉你更多相关信息。

Redis和MySQL如何保证一致性

网小编为你介绍Redis和MySQL如何保证一致性的相关介绍,接下来带大家一起了解。

可以采用「先更新数据库,再删除缓存」的更新策略+过期时间来兜底。

我们用「读 + 写」请求的并发的场景来分析。

假如某个用户数据在缓存中不存在,请求 A 读取数据时从数据库中查询到年龄为 20,在未写入缓存中时另一个请求 B 更新数据。

它更新数据库中的年龄为 21,并且清空缓存。这时请求 A 把从数据库中读到的年龄为 20 的数据写入到缓存中。

Redis和MySQL如何保证一致性

最终,该用户年龄在缓存中是 20(旧值),在数据库中是 21(新值),缓存和数据库数据不一致。

从上面的理论上分析,先更新数据库,再删除缓存也是会出现数据不一致性的问题,但是在实际中,这个问题出现的概率并不高

因为缓存的写入通常要远远快于数据库的写入,所以在实际中很难出现请求 B 已经更新了数据库并且删除了缓存,请求 A 才更新完缓存的情况。

而一旦请求 A 早于请求 B 删除缓存之前更新了缓存,那么接下来的请求就会因为缓存不命中而从数据库中重新读取数据,所以不会出现这种不一致的情况。

所以,「先更新数据库 + 再删除缓存」的方案,是可以保证数据一致性的

而且为了确保万无一失,还给缓存数据加上了「过期时间」,就算在这期间存在缓存数据不一致,有过期时间来兜底,这样也能达到最终一致。

上述就是Redis和MySQL如何保证一致性的技术经验小知识,以上内容供大家学习了解!

本站部分文章来自网络或用户投稿,如无特殊说明或标注,均为本站原创发布。涉及资源下载的,本站旨在共享仅供大家学习与参考,如您想商用请获取官网版权,如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
投稿

Kafka除了用作消息队列还能干吗

2024-1-15 20:10:26

投稿

网络安全工具Goby介绍(Goby网络安全工具简介)

2024-1-15 20:11:02

搜索