美文网首页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