美文网首页Hello Java
redis分布式锁

redis分布式锁

作者: Aldeo | 来源:发表于2018-09-15 22:16 被阅读18次

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

        //创建分布式锁
    public boolean lockOn(String creditId) {
        BoundValueOperations<String, String> 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:


image.png

2.使用锁

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

相关文章

网友评论

    本文标题:redis分布式锁

    本文链接:https://www.haomeiwen.com/subject/eqntnftx.html