多线程环境下如果不对共享资源进行加锁操作就会出现数据不同步的问题,通常情况下有三种分布式锁的实现,即DB、Redis、zookeeper。 DB可以基于表记录来实现,创建一张锁表,需要获得锁时插入一条数据,释放锁时删除该记录。但是这种锁没有失效时间,会出现单点问题,而且是非可重入。也可以使用select for update实现排他锁,由于InnoDB 预设是Row-Level Lock,所以只有「明确」的指定主键,MySQL 才会执行行锁 ,否则MySQL 将会执行表锁。 Redis加锁,就是给key键设置一个值,并定一个过期时间,解锁就是把该键删除。当然也可以直接使用Redisson提高...