Redis分布式锁的try-with-resources实现

redisScript = RedisScript.of(script,Boolean.class); //是否redis锁 Boolean result = (Boolean) redisTemplate.execute(redisScript, Arrays.asList(lockKey), lockValue); LOGGER.info("释放redis锁结果:"+result); } }

只要实现了Closeable接口,并重写了close()方法,就可以使用try-with-resources的方式了。

具体的使用代码如下:

@SpringBootApplication public class Application { private static final Logger LOGGER = LoggerFactory.getLogger(Application.class); public static void main(String[] args) { ConfigurableApplicationContext applicationContext = SpringApplication.run(Application.class, args); RedisTemplate redisTemplate = applicationContext.getBean("redisTemplate",RedisTemplate.class); try (RedisLock lock = new RedisLock(redisTemplate,"test_key","test_val",60)){ //获取锁 if (lock.getLock()){ //模拟执行业务 Thread.sleep(5*1000); LOGGER.info("获取到锁,执行业务操作耗时5s"); } }catch (Exception e){ LOGGER.error(e.getMessage(),e); } } }

这样我们就不用关心锁的释放问题了。

本项目示例程序:https://github.com/liubo-tech/redis-distribute-lock


分享到:


相關文章: