redission分布式锁

- 先引用pom依赖

<dependency>
   <groupId>org.redisson</groupId>
   <artifactId>redisson-spring-boot-starter</artifactId>
   <version>3.9.1</version>
</dependency>

- 在加入yml文件

singleServerConfig:
  #连接空闲超时,单位:毫秒
  idleConnectionTimeout: 10000
  pingTimeout: 1000
  #连接超时,单位:毫秒
  connectTimeout: 10000
  #命令等待超时,单位:毫秒
  timeout: 3000
  #命令失败重试次数
  retryAttempts: 3
  #命令重试发送时间间隔,单位:毫秒
  retryInterval: 1500
  #重新连接时间间隔,单位:毫秒
  reconnectionTimeout: 3000
  #执行失败最大次数
  failedAttempts: 3
  #单个连接最大订阅数量
  subscriptionsPerConnection: 5
  #客户端名称
  clientName: null
  #地址
  address: "redis://你的redis地址"
  #数据库编号
  database: 0
  #密码
  password: redis密码
  #发布和订阅连接的最小空闲连接数
  subscriptionConnectionMinimumIdleSize: 1
  #发布和订阅连接池大小
  subscriptionConnectionPoolSize: 50
  #最小空闲连接数
  connectionMinimumIdleSize: 32
  #连接池大小
  connectionPoolSize: 64
  #是否启用DNS监测
#  dnsMonitoring: false
  #DNS监测时间间隔,单位:毫秒
  dnsMonitoringInterval: 5000
threads: 0
nettyThreads: 0
codec: !<org.redisson.codec.JsonJacksonCodec> {}
transportMode : "NIO"
  • 再建立config配置
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.io.IOException;

/**
 *
 * 功能描述: 分布式锁配置类
 *  * @param:
 * @return:
 * @auther: mamengkai
 * @date: 2018-12-20 11:26
 */
@Configuration
public class RedissonConfig {
    @Bean
    public RedissonClient redisson() throws IOException {
        // 使用的是yaml格式的配置文件,读取使用Config.fromYAML,如果是Json文件,则使用Config.fromJSON
        Config config = Config.fromYAML(RedissonConfig.class.getClassLoader().getResource("redisson.yml"));
        return Redisson.create(config);
    }
}
  • 最后应用在业务
/**
 *
 * 功能描述: 积分划转
 *
 * @param: [taferIntegralOutId, taferIntegralInId, integralBalance]
 * 转出方Id,转入方Id,转入积分数量
 * @return: com.gongshi.web.citic.common.util.ReturnData
 * @auther: mamengkai
 * @date: 2018-12-05 18:14
 */
@PostMapping("/member/taferIntegral")
public ReturnData taferIntegral(String traferOutId,String traferInId,  Long integralBalance, @RequestParam("data") String data){
   Map object = JSONObject.parseObject(data);
   traferOutId = object.get("traferOutId").toString();
   traferInId = object.get("traferInId").toString();
   integralBalance = Long.valueOf( object.get("integralBalance").toString());
   DealIntegralPojo dealIntegralPojo = new DealIntegralPojo();
   //获得分布式锁
   RLock lock =redisson.getLock("taferIntegral");
   //开始对积分转账进行加锁
   lock.lock();
   try{
      -------你的业务逻辑

   }catch (Exception e){
      e.printStackTrace();
      return ReturnData.error(Constant.SYSTEM_ERROR_CODE);

   }finally{
      lock.unlock();
   }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朕穿越来写代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值