目录
一、Mysql与Redis同步数据是否存在延迟呢?
数据同步过程中,会存在短暂的延迟,这属于正常的现象,在分布式架构中很难实现数据强一致性,但你不能延迟太久。
弱一致性: 主从之间数据允许不一致性;
强一致性: 主从之间数据必须一致性; 如果实现 成本是非常高,会设计到一些锁的技术。
最终一致性:短暂的数据延迟是允许的,但是最终数据是需要一致。在分布式中做数据同步需要经过网络传输的,网络传输数据需要一定的时间,所以数据短暂的延迟是允许的,但是最终数据一定达成一致。
延迟是很难避免的,优化 减少延迟的时间。
公司中数据 同步延迟 优化在10-30毫秒。
二、如何保证一致性?
2.1、第一种方式:手动编码
更新mysql数据,再手动清除 Redis 缓存 ,之后再请求的时候因为Redis没有缓存了,所以重新查询数据库最新的数据,再手动同步到Redis中。
这种方式可以实现,但效率不高。
耦合性太大,因为是同步,当请求redis没有缓存时,查询数据库数据存到redis中,那么在缓存到redis过程中,redis宕机了,那么必然会触发重试机制,导致影响接口的响应速度。
2.2、第二种方式:MQ异步更新
首先用户发布请求去更新数据,我们先更新Mysql数据库,更