当修改了数据库的数据也要同时更新缓存的数据,缓存和数据库的数据要保持一致。
二进制日志(BINLOG)记录了所有DDL语句和DML语句,但不包括数据查询(select,show)语句
在读多写少情况下可以使用分布式锁,能保证数据的强一致性,但是性能比较低。
实现:
共享锁:读锁readLock,加锁之后,其他线程可以共享读操作(用在查询数据方法里面)
排他锁:独占锁writeLock,加锁之后,阻塞其他线程读写操作(用在更新数据方法里面)
使用Redisson来实现,对同一把锁分别使用readLock,writeLock。
RReadWriteLock readWriteLock = redissonClient.getReadWriteLock("ITEM_READ_WRITE_LOCK");
//在更新数据的方法里面使用writeLock
readWriteLock.writeLock();
//在查询的方法使用readLock
readWriteLock.readLock();