Redisson实现分布式锁案例
引入依赖
< dependency> < groupId> org.redisson</ groupId> < artifactId> redisson-spring-boot-starter</ artifactId> < version> 3.23.2</ version>
</ dependency>
创建Redisson配置类
@Configuration
public class RedissonConfig { @Bean public RedissonClient redissonClient ( ) { Config config = new Config ( ) ; config. useSingleServer ( ) . setAddress ( "redis://127.0.0.1:6379" ) ; return Redisson . create ( config) ; }
}
使用分布式锁
@RestController
public class LockController { @Resource private RedissonClient redissonClient; @RequestMapping ( "/lock" ) public String lockResource ( ) throws InterruptedException { String lockKey = "myLock" ; RLock lock = redissonClient. getLock ( lockKey) ; try { boolean isLocked = lock. tryLock ( 20 , TimeUnit . SECONDS ) ; if ( isLocked) { try { TimeUnit . SECONDS . sleep ( 5 ) ; return "成功获取到锁,并执行业务代码" ; } catch ( InterruptedException e) { e. printStackTrace ( ) ; } finally { lock. unlock ( ) ; } } else { return "获取锁失败" ; } } catch ( InterruptedException e) { e. printStackTrace ( ) ; } return "获取锁成功" ; }
} ```