使用redis实现分布式锁
redis命令:set users 10 nx ex 12 原子性命令
//使用uuid,解决锁释放的问题@GetMappingpublic void testLock() throws InterruptedException {String uuid = UUID.randomUUID().toString();Boolean b_lock = redisTemplate.opsForValue().setIfAbsent("lock", uuid, 10, TimeUnit.SECONDS);if(b_lock){Object value = redisTemplate.opsForValue().get("num");if(StringUtils.isEmpty(value)){return;}int num = Integer.parseInt(value + "");redisTemplate.opsForValue().set("num",++num);Object lockUUID = redisTemplate.opsForValue().get("lock");if(uuid.equals(lockUUID.toString())){redisTemplate.delete("lock");}}else{Thread.sleep(100);testLock();}}
