1.添加依赖
<dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.13.6</version>
</dependency>
2.配置文件yml
没有配置密码会报错
redis:database: 0timeout: 3000password: 123456host: 127.0.0.1port: 6379jedis:pool:max-wait: -1 #连接池最大阻塞等待时间(使用负值表示没有限制)max-active: 8 # 连接池最大连接数(使用负值表示没有限制)max-idle: 8 # 连接池中的最大空闲连接min-idle: 0 # 连接池中的最小空闲连接
3.配置文件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;/*** redisConfig配置类* @Author: 社会主义码农* @Date: 2024/08/13/10:46* @Description: good good study,day day up*/
@Configuration
public class RedissonConfig {@Value("${spring.redis.host}")private String host;@Value("${spring.redis.port}")private String port;@Value("${spring.redis.password:#{null}}")private String password;@Beanpublic RedissonClient redissonClient() {// 配置Config config = new Config();String redisAddress = String.format("redis://%s:%s", host, port);config.useSingleServer().setAddress(redisAddress).setRetryInterval(5000).setTimeout(10000).setConnectTimeout(10000);if (ToolUtil.isEmpty(password)) {config.useSingleServer().setPassword(password);}// 创建RedissonClient对象return Redisson.create(config);}
}
4.测试
/*** redis分布式锁测试* @return*/@GetMapping("/redisSonTest")public String redisSonTest(){String key = "redisSon";RLock lock = null;try {//自带看门狗lock = redissonClient.getLock(key);//不带看门狗,parms:1:等待时间,2:锁时间,3.时间单位//boolean b1 = lock.tryLock(30, 10, TimeUnit.SECONDS);//带看门狗,parms:1等待时间,0:表示不等待,拿到就拿到,拿不到不等待,1:时间单位,因为自带看门狗,不需要锁时间boolean b = lock.tryLock(0, TimeUnit.SECONDS);if (b){System.out.println("抢到锁了,执行下一步");}else {System.out.println("没有抢到锁");return "没有抢到锁";}} catch (Exception e) {e.printStackTrace();} finally {if (lock != null && lock.isHeldByCurrentThread()){System.out.println("释放锁");lock.unlock();}}return "测试成功";}