1 setnx实现分布式锁
setnx实现分布式锁的原理:共享资源互斥、共享资源串行化。单应用中使用锁:(单进程多线程)synchronized、ReentrantLock。分布式应用中使用锁:(多进程多线程)分布式锁是控制分布式系统之间同步访问共享资源的一种方式。利用Redis的单线程特性对共享资源进行串行化处理。
1.1 获取锁
本例子都是基于redisTemplate
作为操作类来进行操作,讲解下面三个获取锁的方式。
方式一:
采用redisTemplate.opsForValue().setIfAbsent(lockKey, requestNo, expireTime, timeUnit)
的方式,没有该key
的时候插入值并设置过期时间,整个步骤在一个原子操作内,推荐使用该方式。
/**
* 推荐使用该方式获取锁
* @param