zoukankan      html  css  js  c++  java
  • springboot整合redisson分布式锁

    一、通过maven引入redisson的jar包

    <dependency>
                <groupId>org.redisson</groupId>
                <artifactId>redisson</artifactId>
                <version>3.6.5</version>
            </dependency>

    二、在yaml文件中引入redis的相关配置(redis单节点可以读取原有redis配置拼装,如果是主从需另外独立配置,相关属性可以参考org.redisson.config.Config.masterSlaveServersConfig)

    spring:
      redis:
        host: 127.0.0.1 
        port: 6379
        password: 111111

    三、添加springboot配置

    package com.aoxun.config;
    
    import org.redisson.Redisson;
    import org.redisson.api.RedissonClient;
    import org.redisson.config.Config;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    /**
     * redisson配置
     * 目前使用的是腾讯云的单节点redis,所以暂时配置单服务
     * 
     *
     */
    @Configuration
    public class RedissonConfig {
    
        @Value("${spring.redis.host}")
        private String host;
        
        @Value("${spring.redis.port}")
        private String port;
        
        @Value("${spring.redis.password}")
        private String password;
        
        
        @Bean
        public RedissonClient getRedisson(){
            
            Config config = new Config();
            config.useSingleServer().setAddress("redis://" + host + ":" + port).setPassword(password);
            //添加主从配置
    //        config.useMasterSlaveServers().setMasterAddress("").setPassword("").addSlaveAddress(new String[]{"",""});
            
            return Redisson.create(config);
        }
        
    }

    四、在需要使用的地方注入RedissonClient即可

    package com.aoxun.modular.menjin.service.impl;
    
    import java.util.concurrent.TimeUnit;
    
    import org.redisson.api.RLock;
    import org.redisson.api.RedissonClient;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    
    @Service
    public class TestRedissonLock{
        
        @Autowired
        private RedissonClient redissonClient;
    
        public void cameraCallback() {
            
            RLock rlock = redissonClient.getLock("redisson:lock:personId" + 123);

         //设置锁超时时间,防止异常造成死锁 rlock.lock(
    20, TimeUnit.SECONDS); try{ //执行业务逻辑 Thread.sleep(10000); System.out.println(123); } catch(Exception e){ }finally{ rlock.unlock(); } } }

    到此利用redisson实现分布式锁简单样例已经结束

    一步一步往前走,总有一天到达目标... 内容仅供参考,如有错漏,烦请指出,不胜感激!
  • 相关阅读:
    oracle的根容器下新建pdb容器及本地用户
    oracle监听配置与防火墙问题
    oracle问题:ORA-09817及解决办法
    Oracle:Ora-01652无法通过128(在temp表空间中)扩展temp段的过程-解决步骤
    oracle:ORA-14765建索引阻塞创建分区及处理步骤
    oracle-组合索引字段位置与查询效率之间的关系
    hbase的split策略和预分区
    启动hbase后hmaster自动关闭
    hive一级分区、二级分区、动态分区
    hive beeline连接和交互shell连接
  • 原文地址:https://www.cnblogs.com/begin2016/p/8965043.html
Copyright © 2011-2022 走看看