1、pom.xml中加入依赖
<dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.5.0</version> </dependency>
2、配置
package com.huixiaoer.base.common.config; import lombok.Data; import org.apache.commons.lang3.StringUtils; import org.redisson.Redisson; import org.redisson.api.RedissonClient; import org.redisson.config.Config; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; @Data @Configuration @ConfigurationProperties(prefix = "spring.redis") @PropertySource("classpath:application.yml") public class RedissonConfig { private String host; private String port; private String password; private int database; @Bean public RedissonClient getRedisson(){ Config config = new Config(); config.useSingleServer().setAddress("redis://" + host + ":" + port).setDatabase(database); if(StringUtils.isNotBlank(password)){ config.useSingleServer().setPassword(password); } return Redisson.create(config); } }
spring: redis: jedis: pool: max-active: 8 min-idle: 2 max-idle: 8 max-wait: -1 database: 0 host: 47.95.241.158 port: 9379 password: y82y^35y5oi_xnHFa timeout: 5000
3、在service中的使用
@Service @Slf4j public class AntOrderBusinessServiceImpl extends AbstractOrderService { @Autowired private RedissonClient redissonClient; @Override public CommonResult timeOut(OrderBusiness orderBusiness){ String orderId = orderBusiness.getOrderId(); RLock rwlock = redissonClient.getReadWriteLock("TIMEOUTLOCK"+orderId).writeLock(); try { rwlock.lock(); //...... }catch (Exception e){ log.error("timeout失败:{}|{}",orderId,ExceptionUtils.getFullStackTrace(e)); }finally { rwlock.unlock(); } return null; } }