今天面试题是关于一致性的,这个使用的Redisson
我们当时是把抢购优惠券的库存放到了缓存里,因此要要使用强一致性的方案。为了保证数据的强一致性,我们当时采用了Redisson的读写锁来保持数据的同步。首先,如果是单纯的进行读操作,是不会产生数据不一致的情况,只有读和写都存在时,才会出现数据不一致的情况,所以我们当时就用的读写锁。
在读缓存的时候加共享锁,可以保证读读不互斥,读写互斥。当我们更新缓存的时候,加上排它锁,他是读读,读写都互斥。这样能保证在写数据的同时,是不会让其他线程读数据的,避免了脏数据。但是需要注意,读方法和写方法必须使用同一把锁。