分布式锁实现方式有很多种,其中最常用的就是用redis或者zk来实现分布式锁,本篇将以redis作为分布式锁来进行展开;
Redisson在基于NIO的Netty框架上,充分的利用了Redis键值数据库提供的一系列优势,在Java实用工具包中常用接口的基础上,为使用者提供了一系列具有分布式特性的常用工具类。使得原本作为协调单机多线程并发程序的工具包获得了协调分布式多机多线程并发系统的能力,大大降低了设计和研发大规模分布式系统的难度。同时结合各富特色的分布式服务,更进一步简化了分布式环境中程序相互之间的协作。
当然,上面是官方的解释,其实redission就是java对redis的分布式锁做了一个实现,并暴露出一些内置的api供开发者调用。
利用该框架暴露出来的接口,获取锁对象: RLock lock = redission.getLock('order_no'); 加锁:lock .lock(); 解锁:lock.unlock();
RLock lock = redission.getLock('order_no');
lock.lock();
try{
//执行业务代码:生成订单号
String orderNo = RandomUtils.genRandom("B1");
} finally{
lock.unlock();
}
解释一下: