springboot整合redisson分布式锁

一、通过maven引入redisson的jar包

1<dependency> 2 <groupId>org.redisson</groupId> 3 <artifactId>redisson</artifactId> 4 <version>3.6.5</version> 5 </dependency>

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

1spring: 2 redis: 3 host: 127.0.0.1 4 port: 6379 5 password: 111111

三、添加springboot配置

1package com.aoxun.config; 2 3import org.redisson.Redisson; 4import org.redisson.api.RedissonClient; 5import org.redisson.config.Config; 6import org.springframework.beans.factory.annotation.Value; 7import org.springframework.context.annotation.Bean; 8import org.springframework.context.annotation.Configuration; 9 10/** 11 * redisson配置 12 * 目前使用的是腾讯云的单节点redis,所以暂时配置单服务 13 * 14 * 15 */ 16@Configuration 17public class RedissonConfig { 18 19 @Value("${spring.redis.host}") 20 private String host; 21 22 @Value("${spring.redis.port}") 23 private String port; 24 25 @Value("${spring.redis.password}") 26 private String password; 27 28 29 @Bean 30 public RedissonClient getRedisson(){ 31 32 Config config = new Config(); 33 config.useSingleServer().setAddress("redis://" + host + ":" + port).setPassword(password); 34 //添加主从配置 35// config.useMasterSlaveServers().setMasterAddress("").setPassword("").addSlaveAddress(new String[]{"",""}); 36 37 return Redisson.create(config); 38 } 39 40}

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

1package com.aoxun.modular.menjin.service.impl; 2 3import java.util.concurrent.TimeUnit; 4 5import org.redisson.api.RLock; 6import org.redisson.api.RedissonClient; 7import org.springframework.beans.factory.annotation.Autowired; 8import org.springframework.stereotype.Service; 9 10 11@Service 12public class TestRedissonLock{ 13 14 @Autowired 15 private RedissonClient redissonClient; 16 17 public void cameraCallback() { 18 19 RLock rlock = redissonClient.getLock("redisson:lock:personId" + 123);     //设置锁超时时间,防止异常造成死锁 20 rlock.lock(20, TimeUnit.SECONDS); 21 22 try{ 23 //执行业务逻辑 24 Thread.sleep(10000); 25 System.out.println(123); 26 27 } catch(Exception e){ 28 29 }finally{ 30 rlock.unlock(); 31 } 32 33 } 34 35 36}

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

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )