缓存和RDB操作不能保证事务性,所以才引发了缓存同步问题。
同时,使用缓存的场景,天然就决定了不能满足绝对的强一致性,这里使用缓存的主要目标是拦截RDB的压力以及提速。
- 首选淘汰缓存,而不是更新缓存;当然更新成本较低时,也可以选择更新,毕竟这样可以避免一次未命中,和RDB的读写同步延迟带来的问题);
- 选用淘汰缓存这种方式时,需要先更新RDB,再淘汰缓存。
- 其实黄金选择是:
a.先淘汰缓存
b.再更新RDB
c.最后开一个延时线程再次淘汰一次缓存
一是可以避免高并发读,造成的缓存污染;
还可以规避RDB主从集群同步延时带来的缓存污染。