每日一博 | 掘地三尺搞定 Redis 与 MySQL 数据一致性问题
Redis 拥有高性能的数据读写功能,被我们广泛用在缓存场景,一是能提高业务系统的性能,二是为数据库抵挡了高并发的流量请求,点我 -> 解密 Redis 为什么这么快的秘密。 把 Redis 作为缓存组件,需要防止出现以下的一些问题,否则可能会造成生产事故。 Redis 缓存满了怎么办? 缓存穿透、缓存击穿、缓存雪崩如何解决? Redis 数据过期了会被立马删除么? Redis 突然变慢了如何做性能排查并解决? Redis 与 MySQL 数据一致性问题怎么应对? 今天「码哥」跟大家一起深入探索缓存的工作机制和缓存一致性应对方案。 在本文正式开始之前,我觉得我们需要先取得以下两点的共识: 缓存必须要有过期时间; 保证数据库跟缓存的最终一致性即可,不必追求强一致性。 目录如下: [toc] 1. 什么是数据库与缓存一致性 数据一致性指的是: 缓存中存有数据,缓存的数据值 = 数据库中的值; 缓存中没有该数据,数据库中的值 = 最新值。 反推缓存与数据库不一致: 缓存的数据值 ≠ 数据库中的值; 缓存或者数据库存在旧的数据,导致线程读取到旧数据。 为何会出现数据一致性问题呢? 把 R...
