1.双删策略 + 设置延迟时间
在数据库更新前后都删除缓存,数据库更新后增加一定延迟时间再删除缓存数据,最后对缓存数据设置过期时间
优势:实现简单
劣势:无法实现绝对的数据一致性,最差的情况是超时时间内,缓存中数据是脏数据,再更新过程中增加延迟时间会导致更新缓存操作耗时过长
2.binLog订阅 +异步更新缓存
使用阿里开源cannal订阅mysql binLog,检测到数据库更新操作后,直接更新缓存内容,或者通过消息队列异步更新
优势:尽可能的保证了数据一致性,更新数据库与更新缓存实现解耦
劣势:引入其他组件,增加了系统的复杂度,实现上会复杂不少,且引入新的组件后需要保证cannal组件的高可用