首页 > 其他 > 详细

分布式锁

时间:2020-09-23 09:17:27      阅读:44      评论:0      收藏:0      [点我收藏+]

Redisson

1.引入redission 作为分布式锁框架

https://github.com/redisson/redisson/wiki/2.-%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95  (中文配置文档地址)

<!-- https://mvnrepository.com/artifact/org.redisson/redisson -->
<dependency>
    <groupId>org.redisson</groupId>
    <artifactId>redisson</artifactId>
    <version>3.13.2</version>
</dependency>
 @Bean(destroyMethod = "shutdown")
    RedissonClient redisson() throws IOException{
        //1.创建配置
        Config config = new Config();
        config.useSingleServer().setAddress("redis://192.168.56.10:6379");
        //2.根据config,创建RedissonClient对象
        return Redisson.create(config);
    }

2.分布式锁和同步器

可重入锁

A、B方法共用一号锁,可重入锁 避免死锁

   //1.调用getLock 获取一把锁,只要锁名一样就是同一把锁
        RLock lock = redissonClient.getLock("my-lock");
        //2.加锁
        lock.lock();
        try{
            System.out.println("加锁成功,执行业务..."+Thread.currentThread().getId());
            Thread.sleep(30000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        } finally {
            //3.解锁
            System.out.println("释放锁。。。"+Thread.currentThread().getId());
            lock.unlock();
        }

Redisson-lock

  • 锁的自动续期,如果业务超长,运行期间自动给锁续上新的30s。不用担心业务时间长,锁自动过期被删掉
  • 加锁的业务只要运行完成,就不会给当前锁续期,即使不手动解锁,锁默认30s后自动删除

分布式锁

原文:https://www.cnblogs.com/sgrslimJ/p/13716162.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!