一、通过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实现分布式锁简单样例已经结束