springboot项目集成redission实现分布式锁

一、引入maven

        <!-- Redisson 锁功能 -->
		<dependency>
			<groupId>org.redisson</groupId>
			<artifactId>redisson-spring-boot-starter</artifactId>
			<version>3.16.2</version>
		</dependency>

二、配置


import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

@Component
public class RedissionConfig {

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

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

	@Bean(destroyMethod = "shutdown")
	public RedissonClient redissonClient(){
		Config config = new Config();
		String address = "redis://" + host + ":" + port;
		config.useSingleServer().setAddress(address);
		return Redisson.create(config);
	}
}

三、使用


    @Autowired
    private RedissonClient redissonClient;

    public void test(){
        String key = "redissionkey001";
        log.info("get lock before");
        Lock lock = redissonClient.getLock(key);
        log.info("get lockkey");
        lock.lock();//锁已经被调用,则该行代码会一直等待锁资源的释放
        try {
            log.info("locked, do sth");
            Thread.sleep(10000);
        }catch (Exception e){
            log.error("{}", e);
        }finally {
            lock.unlock();
        }
    }

四、说明

在引入redission之前,项目中已经集成了redis作为公共服务,公共模块中redission的引入会覆盖redis的配置,所以集成方式为redis作为公共模块引入项目,在该项目中再单独引入redission,完美解决冲突

猜你喜欢

转载自blog.csdn.net/Yang_RR/article/details/131694353