在高并发的系统中,难免会遇到分布式锁的问题。这个时候,我们大家更多是用redission来实现分布式锁
Redission框架
redission是基于redis实现的分布式锁,我这里列举几个类型的分布式锁来给大家讲讲
可重入锁
可重入锁RLock 实现lock接口,同时支持过期自动解锁的功能
使用方法就是lock.trylock(4,10,TimeUnit.SECONDS),这是同步锁,还有异步锁
lock.lockAsync()
lock.lockAsync(10,TimeUnit.SECONDS)
注意在finallly中释放锁,lock.unlock()
公平锁
公平锁在上面可重入锁的基础上,自动过期解锁的同时,保证多个redission客户端同时请求加锁的同时,优先分配给先发出请求的线程
同时公平锁也有异步执行的方法
红锁
该对象可用来将多个Rlock对象关联为一个红锁,每个rlock对象实例来源于不同的redisson实例
在高并发的系统中,用的最多的还是可重入锁或者红锁来显示。比如在下订单减库存的时候,我们可以加锁来实现订单超卖的问题,后期我们会详细讲解分布式锁的场景。