1.添加Maven依赖
<!-- redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.integration</groupId> <artifactId>spring-integration-redis</artifactId> </dependency>
2.注册RedisLockRegistry
@Configuration public class RedisLockConfig { @Bean public RedisLockRegistry redisLockRegistry(RedisConnectionFactory redisConnectionFactory) { //第一个参数redisConnectionFactory //第二个参数registryKey,分布式锁前缀,设置为项目名称会好些 //该构造方法对应的分布式锁,默认有效期是60秒.可以自定义 return new RedisLockRegistry(redisConnectionFactory, "boot-launch"); //return new RedisLockRegistry(redisConnectionFactory, "boot-launch",60); } }
3.使用RedisLockRegistry
import org.springframework.integration.redis.util.RedisLockRegistry; import java.util.concurrent.locks.Lock; @Autowired private RedisLockRegistry redisLockRegistry; public voidinputPatrolCheckResult(TicketTask ticketTask, int resultType, String desc){ Lock lock = redisLockRegistry.obtain("锁名" + uuid); if (lock.tryLock()) { try { // 这里添加代码块 } finally { lock.unlock(); } } else { logger.info("正在处理中,请勿重复提交"); } }