使用redis实现分布式锁
    redis命令:set users 10 nx ex 12 原子性命令

    1. //使用uuid,解决锁释放的问题
    2. @GetMapping
    3. public void testLock() throws InterruptedException {
    4. String uuid = UUID.randomUUID().toString();
    5. Boolean b_lock = redisTemplate.opsForValue().setIfAbsent("lock", uuid, 10, TimeUnit.SECONDS);
    6. if(b_lock){
    7. Object value = redisTemplate.opsForValue().get("num");
    8. if(StringUtils.isEmpty(value)){
    9. return;
    10. }
    11. int num = Integer.parseInt(value + "");
    12. redisTemplate.opsForValue().set("num",++num);
    13. Object lockUUID = redisTemplate.opsForValue().get("lock");
    14. if(uuid.equals(lockUUID.toString())){
    15. redisTemplate.delete("lock");
    16. }
    17. }else{
    18. Thread.sleep(100);
    19. testLock();
    20. }
    21. }