【redis】缓存-双写一致性

2 阅读1分钟

提问:redis作为缓存,怎么做到跟mysql数据进行同步(或介绍下redis的双写一致性)?

回答:双写一致性指的是当修改了数据库的数据也要同时更新缓存的数据,缓存和数据库的数据要保持一致。
在面对一致性要求不高的数据(如互联网的信息)我们采用的是异步(延迟双删)的方案;
在面对一致性要求高的数据(如金融相关数据)我们采用redisson读写锁(分布式锁)的方案。

提问:分别介绍下这两种方案

回答:
异步(延迟双删)方案原理就是删除缓存后更新数据库,之后延迟时间再删除缓存。他的特点是性能好但一致性没这么强,容易产生脏数据;
redisson读写锁(分布式锁)方案原理是在读数据的时候添加共享锁(读锁readlock)保证其他线程共享读操作;在写操作时添加排他锁(独占锁writelock)阻止其他线程读写操作,从而保证一致性,避免脏数据产生。