• 分布式锁Redisson的使用


    Redisson分布式锁的使用

    1.依赖:

    <!-- 原生,本章使用-->
    <dependency>
        <groupId>org.redisson</groupId>
        <artifactId>redisson</artifactId>
        <version>3.13.6</version>
    </dependency>
    
    <!-- 另一种Spring集成starter,本章未使用 -->
    <dependency>
        <groupId>org.redisson</groupId>
        <artifactId>redisson-spring-boot-starter</artifactId>
        <version>3.13.6</version>
    </dependency>

    2.配置:

    @Configuration
    public class RedissionConfig {
        @Value("${spring.redis.host}")
        private String redisHost;
    
        @Value("${spring.redis.password}")
        private String password;
    
        private int port = 6379;
    
        @Bean
        public RedissonClient getRedisson() {
            Config config = new Config();
            config.useSingleServer().
                    setAddress("redis://" + redisHost + ":" + port).
                    setPassword(password);
            config.setCodec(new JsonJacksonCodec());
            return Redisson.create(config);
        }
    }

    3.启用分布式锁

    @Resource
    private RedissonClient redissonClient;
    
    RLock rLock = redissonClient.getLock(lockName);
    try {
        boolean isLocked = rLock.tryLock(expireTime, TimeUnit.MILLISECONDS);
        if (isLocked) {
            // TODO
                    }
        } catch (Exception e) {
                rLock.unlock();
        }

     简洁明了,只需要一个RLock,既然推荐Redisson,就往里面看看他是怎么实现的。 请 参考:https://mp.weixin.qq.com/s/NOpy5nxPW7RWTN0iDIWJ5A

     
    高效原因:
    当锁被其他线程占用时,通过监听锁的释放通知(在其他线程通过RedissonLock释放锁时,会通过发布订阅pub/sub功能发起通知),等待锁被其他线程释放,也是为了避免自旋的一种常用效率手段。
  • 相关阅读:
    ArchLinux安装(UEFI)
    html+css第三篇
    html+css第二篇
    html+css第一篇
    工作流会用到几张表
    Sql server 删除重复记录的SQL语句
    idea创建 springboot工程(支持jsp)
    sql查询重复数据
    idea中解决整合SSM加载不到dataSource;
    maven私服
  • 原文地址:https://www.cnblogs.com/lshan/p/16539116.html
Copyright © 2020-2023  润新知