redis分布式锁
public String redisStock() throws InterruptedException{
String lockKey="mylock";
String clientId = UUID .randomUUID().toString();
Try{
//获取锁,相当于jedis. setnx (key, value) 保证了原子性,保证获取锁的同时加入了超时时间。
防止获取锁的时候程序出现意外并没有设置超时时间,导致死锁,锁无法释放
Boolean result=stringRedisTemplate .opsForValue().setIfAbsent(lockKey,clientId,10,TimeUnit.SECONDS);
if (! result){return "error";}
//具体业务操作代码
} finally {
//确保高并发下,每个线程正确释放自己的锁
if (clientId.equals(stringRedisTemplate.opsForValue(). get (lockKey ){
//释放锁
stringRedisTemplate.delete(lockKey);}}
return "OK";}