springboot 集成 redisson

135 阅读1分钟

集成 redisson 分两步,第一步引入pom,第二步需要配置
1引入pom

<dependency>
            <groupId>org.redisson</groupId>
            <artifactId>redisson-spring-boot-starter</artifactId>
            <version>3.13.6</version>
        </dependency>

2 自定义配置redisson地址

import lombok.Data;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.io.IOException;

@Configuration
@ConfigurationProperties(prefix = "spring.redis")
@Data
public class MyRedissonConfig {

    private String host;
    private String port;

    @Bean(destroyMethod = "shutdown")
    RedissonClient redisson() throws IOException {
        //1、创建配置
        Config config = new Config();
        config.useSingleServer()
                .setAddress("redis://" + host + ":" + port);
        return Redisson.create(config);
    }

}

接下来就可以使用了,给出一个demo

@Autowired
 RedissonClient redissonClient;


    @Test
    void treelUtil() {
        RLock lock = redissonClient.getLock("124");
        try {

            System.out.println(lock);
            lock.lock(30, TimeUnit.MILLISECONDS);

            if (lock.isLocked()) {
                System.out.println("获取到了");
            } else {
                System.out.println("未获取到");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (lock.isHeldByCurrentThread()) {
                lock.unlock();
                System.out.println("解锁成功");
            }
        }
    }
}

ps: 集成过程中百度了很多文章,也有一些疑惑,请知道的大神予以解答 两个问题,但是是同样的
RedissonAutoConfiguration 中已经明确引入了 相关配置,附上一段此类的代码

@Configuration
@ConditionalOnClass({Redisson.class, RedisOperations.class})
@AutoConfigureBefore({RedisAutoConfiguration.class})
@EnableConfigurationProperties({RedissonProperties.class, RedisProperties.class})
public class RedissonAutoConfiguration {
    private static final String REDIS_PROTOCOL_PREFIX = "redis://";
    private static final String REDISS_PROTOCOL_PREFIX = "rediss://";
    @Autowired(
        required = false
    )

其中引入了RedisProperties,正常来说,是无须编写redisson配置类的,但是不知为何,必须要有该配置类,否则注入redisson失败

此外RedissonProperties 中 一段代码

@ConfigurationProperties(
    prefix = "spring.redis.redisson"
)
public class RedissonProperties {
    private String config;
    private String file;

    public RedissonProperties() {
    }

其中 spring.redis.redisson 按照此,我在yml中配置,也是不生效的,无法读取配置

image.png

怎么回事呢~~

本文转自 jimolvxing.blog.csdn.net/article/det…,如有侵权,请联系删除。