使用Redis实现分布式锁实例一

2022/6/21 2:20:13

本文主要是介绍使用Redis实现分布式锁实例一,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

以下是使用Redis在高并发下实现的一把分布式锁示例,直接上代码:

@RequestMapping("/deduct_stock")
    public String getbykey(String key) {
        String lockKey = "product" + key;
        String uuid = UUID.randomUUID().toString();
        //最简单的分布式锁
        Boolean locked = stringRedisTemplate.opsForValue().setIfAbsent(lockKey, uuid,30,TimeUnit.SECONDS);
        if(!locked){
            return "error_code";
        }
        try{
            synchronized (this) {
                String result = stringRedisTemplate.opsForValue().get(key);
                if (StringUtils.hasLength(result)) {
                    int number = Integer.parseInt(result);
                    if (number > 0) {
                        number--;
                        stringRedisTemplate.opsForValue().set("stock", number + "");
                        System.out.println("库存为:" + number);
                    }else{
                        System.out.println("库存不足");
                    }
                }
                return result;
            }
        }finally {
            if(uuid.equals(stringRedisTemplate.opsForValue().get(lockKey))) {
                stringRedisTemplate.delete(lockKey);
            }
        }

    }

 



这篇关于使用Redis实现分布式锁实例一的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程