分布式锁一般有三种实现方式:
1. 数据库乐观锁;
2. 基于Redis的分布式锁;
3. 基于ZooKeeper的分布式锁。
原理的话简单说就是这样:首先redis是单进程单线程的,这个很好理解,api逐个执行,不存在并行,所以它的操作是原子性的。
但光有原子性,还不能做分布式锁,因为很多业务是多个原子性操作放在一起完成一次业务,并不是某一个原子性处理操作就能完成,有时候还需要面对各种情况(如超时怎么处理)。所以这个时候有了redisson,redisson就是利用redis的原子性实现锁功能的。具体可以看看redisson的文章,或直接看源码。
原理的话简单说就是这样:首先redis是单进程单线程的,这个很好理解,api逐个执行,不存在并行,所以它的操作是原子性的。
但光有原子性,还不能做分布式锁,因为很多业务是多个原子性操作放在一起完成一次业务,并不是某一个原子性处理操作就能完成,有时候还需要面对各种情况(如超时怎么处理)。所以这个时候有了redisson,redisson就是利用redis的原子性实现锁功能的。具体可以看看redisson的文章,或直接看源码。