Redisson分布式锁

拜拜、爱过 提交于 2019-11-26 02:51:03

build.gradle

compile 'org.redisson:redisson:3.11.4'

application.properties

spring.redis.host=192.168.10.10
spring.redis.port=6379
spring.redis.password=

RedissonConfig.java

/**
 * Redisson配置类
 */
@Configuration
public class RedissonConfig {

    @Value("${spring.redis.host}")
    private String host;

    @Value("${spring.redis.port}")
    private String port;

    @Value("${spring.redis.password}")
    private String password;

    /**
     * 单机模式
     * @return
     */
    @Bean(destroyMethod = "shutdown")
    public RedissonClient redissonClient() {
        Config config = new Config();
        SingleServerConfig singleServerConfig = config.useSingleServer();
        singleServerConfig.setAddress("redis://" + host + ":" + port);
        if (StringUtils.isNotBlank(password)) {
            singleServerConfig.setPassword(password);
        }
        return Redisson.create(config);
    }

}

应用

@Autowired
private RedissonClient redissonClient;

/**
 * 加分布式锁
 * @return
 */
private RLock addDistributedLock() {
	RLock lock = null;
	try {
		lock = redissonClient.getLock("distributed-lock-key");
		// 如果没有手动释放,10分钟之后将自动释放
		lock.lock(10, TimeUnit.MINUTES);
	} catch (Exception e) {
		// redis加锁异常,不影响程序运行
		log.error("addDistributedLock has Exception", e);
	}
	return lock;
}

/**
 * 释放分布式锁
 * @param lock
 */
private void releaseDistributedLock(RLock lock) {
	if (Objects.isNull(lock)) {
		// 加锁失败,不用释放
		return;
	}
	try {
		lock.unlock();
	} catch (Exception e) {
		// redis释放锁异常,不影响程序运行
		log.error("releaseDistributedLock has Exception", e);
	}
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!