redis分布式锁

1.创建分布式锁
由于Redis是单线程模型,命令操作原子性,所以利用这个特性可以很容易的实现分布式锁。

        //创建分布式锁
    public boolean lockOn(String creditId) {
        BoundValueOperations ops = redisTemplate.boundValueOps(KEY + creditId);
             //只有当前操作员设置成功,才允许其操作
            //setIfAbsent 不存在key则添加key将value值设置为1
        if (ops.setIfAbsent("1")) {
             //设置过期时间会到时删除key
            ops.expire(1, TimeUnit.MINUTES);
            return true;
        } else {
                        //存在key则返回false
            return false;
        }
    }

    //删除分布式锁
    public void releaseOnRepayment(String creditId) {
        redisTemplate.delete(creditId);
    }

ps:


redis分布式锁_第1张图片
image.png

2.使用锁

if (operationLockBiz.lockOnRepayment(creditId)) {
             try{
              //用完需要将锁删除
              finally {
                operationLockBiz.releaseOnRepayment(creditId);
            }

你可能感兴趣的:(redis分布式锁)