常见的方案
方案一:先写Mysql,再写Redis
并发读写的时候数据会不一致或者redis数据更新不到最新的数据。
方案二:先删除Redis,再写Mysql,再删除Redis
算是方案一的补救,不是好方法,两次redis操作,风险不可控。
方案三:先写Mysql,再删除Redis
并发读写的时候,可能会出现有一次数据不一致情况,(删除数据库,还没来及的删除reids的时候,从redis读取数据为旧数据)针对不强一致性的业务可以使用。向秒杀,或者库存服务是不能使用的。
方案四:先写Mysql,通过Binglog,异步更新Redis
能做到最终一致,但是实时性不好。常见比如灾备,数据汇总等等,常见是binlog + kafka。
推荐的方案
方案一:先写Mysql,再删除Redis
实时一致性方案,最多出现有一次数据不一致情况。
方案二:先写Mysql,通过Binglog,异步更新Redis
最终一致性方案,配合消息队列异步更新,实现数据最终一致。