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
閱讀更多 溫榆河大咖 的文章