0


redisson配置类---SpringBoot集成、redis单机和集群模式配置

1项目配置文件:

1.1:pom.xml

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

1.2 application.yml配置文件

spring:redis:cluster:nodes:- ip:port
      - ip:port
      - ip:port
      - ip:port
      - ip:port
      - ip:port
  # 密码password:*******# 连接超时时间timeout: 10s
  # 是否开启sslssl:falseredisson:# 线程池数量threads:8# Netty线程池数量nettyThreads:16# 集群配置clusterServersConfig:# 客户端名称clientName: redisClient
  # master最小空闲连接数masterConnectionMinimumIdleSize:16# master连接池大小masterConnectionPoolSize:32# slave最小空闲连接数slaveConnectionMinimumIdleSize:16# slave连接池大小slaveConnectionPoolSize:64# 连接空闲超时,单位:毫秒idleConnectionTimeout:10000# 命令等待超时,单位:毫秒timeout:3000# 发布和订阅连接池大小subscriptionConnectionPoolSize:50# 读取模式readMode:"SLAVE"# 订阅模式subscriptionMode:"MASTER"cacheGroup:# 用例: @Cacheable(cacheNames="groupId", key="#XXX") 方可使用缓存组配置-groupId: redissonCacheMap
    # 组过期时间(脚本监控)ttl:60000# 组最大空闲时间(脚本监控)maxIdleTime:60000# 组最大长度maxSize:0

配置类

2-1配置属性类:RedissonProperties.java

importlombok.Data;importlombok.NoArgsConstructor;importorg.redisson.config.ReadMode;importorg.redisson.config.SubscriptionMode;importorg.springframework.boot.context.properties.ConfigurationProperties;importorg.springframework.stereotype.Component;importjava.util.List;/**
 * Redisson 配置属性
 * @author zengshichang
 */@Data@Component@ConfigurationProperties(prefix ="redisson")publicclassRedissonProperties{/**
     * 线程池数量,默认值 = 当前处理核数量 * 2
     */privateint threads;/**
     * Netty线程池数量,默认值 = 当前处理核数量 * 2
     */privateint nettyThreads;/**
     * 单机服务配置
     */privateSingleServerConfig singleServerConfig;/**
     * 集群服务配置
     */privateClusterServersConfig clusterServersConfig;/**
     * 缓存组
     */privateList<CacheGroup> cacheGroup;@Data@NoArgsConstructorpublicstaticclassSingleServerConfig{/**
         * 客户端名称
         */privateString clientName;/**
         * 最小空闲连接数
         */privateint connectionMinimumIdleSize;/**
         * 连接池大小
         */privateint connectionPoolSize;/**
         * 连接空闲超时,单位:毫秒
         */privateint idleConnectionTimeout;/**
         * 命令等待超时,单位:毫秒
         */privateint timeout;/**
         * 发布和订阅连接池大小
         */privateint subscriptionConnectionPoolSize;}@Data@NoArgsConstructorpublicstaticclassClusterServersConfig{/**
         * 客户端名称
         */privateString clientName;/**
         * master最小空闲连接数
         */privateint masterConnectionMinimumIdleSize;/**
         * master连接池大小
         */privateint masterConnectionPoolSize;/**
         * slave最小空闲连接数
         */privateint slaveConnectionMinimumIdleSize;/**
         * slave连接池大小
         */privateint slaveConnectionPoolSize;/**
         * 连接空闲超时,单位:毫秒
         */privateint idleConnectionTimeout;/**
         * 命令等待超时,单位:毫秒
         */privateint timeout;/**
         * 发布和订阅连接池大小
         */privateint subscriptionConnectionPoolSize;/**
         * 读取模式
         */privateReadMode readMode;/**
         * 订阅模式
         */privateSubscriptionMode subscriptionMode;}@Data@NoArgsConstructorpublicstaticclassCacheGroup{/**
         * 组id
         */privateString groupId;/**
         * 组过期时间
         */privatelong ttl;/**
         * 组最大空闲时间
         */privatelong maxIdleTime;/**
         * 组最大长度
         */privateint maxSize;}}

2-2redis配置:RedisConfig.java

importcom.fasterxml.jackson.databind.ObjectMapper;importlombok.extern.slf4j.Slf4j;importorg.redisson.api.RedissonClient;importorg.redisson.client.codec.StringCodec;importorg.redisson.codec.JsonJacksonCodec;importorg.redisson.spring.cache.CacheConfig;importorg.redisson.spring.cache.RedissonSpringCacheManager;importorg.redisson.spring.starter.RedissonAutoConfigurationCustomizer;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.boot.context.properties.EnableConfigurationProperties;importorg.springframework.cache.CacheManager;importorg.springframework.cache.annotation.CachingConfigurerSupport;importorg.springframework.cache.annotation.EnableCaching;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importcn.hutool.core.util.ObjectUtil;importjava.util.HashMap;importjava.util.List;importjava.util.Map;/**
 * redis配置
 * @author zengshichang
 */@Slf4j@Configuration@EnableCaching@EnableConfigurationProperties(RedissonProperties.class)publicclassRedisConfigextendsCachingConfigurerSupport{@AutowiredprivateRedissonProperties redissonProperties;@AutowiredprivateObjectMapper objectMapper;@BeanpublicRedissonAutoConfigurationCustomizerredissonCustomizer(){return config ->{
            config.setThreads(redissonProperties.getThreads()).setNettyThreads(redissonProperties.getNettyThreads()).setCodec(newStringCodec());RedissonProperties.SingleServerConfig singleServerConfig = redissonProperties.getSingleServerConfig();if(ObjectUtil.isNotNull(singleServerConfig)){// 使用单机模式
                config.useSingleServer().setTimeout(singleServerConfig.getTimeout()).setClientName(singleServerConfig.getClientName()).setIdleConnectionTimeout(singleServerConfig.getIdleConnectionTimeout()).setSubscriptionConnectionPoolSize(singleServerConfig.getSubscriptionConnectionPoolSize()).setConnectionMinimumIdleSize(singleServerConfig.getConnectionMinimumIdleSize()).setConnectionPoolSize(singleServerConfig.getConnectionPoolSize());}// 集群配置方式 参考下方注释RedissonProperties.ClusterServersConfig clusterServersConfig = redissonProperties.getClusterServersConfig();if(ObjectUtil.isNotNull(clusterServersConfig)){
                config.useClusterServers().setTimeout(clusterServersConfig.getTimeout()).setClientName(clusterServersConfig.getClientName()).setIdleConnectionTimeout(clusterServersConfig.getIdleConnectionTimeout()).setSubscriptionConnectionPoolSize(clusterServersConfig.getSubscriptionConnectionPoolSize()).setMasterConnectionMinimumIdleSize(clusterServersConfig.getMasterConnectionMinimumIdleSize()).setMasterConnectionPoolSize(clusterServersConfig.getMasterConnectionPoolSize()).setSlaveConnectionMinimumIdleSize(clusterServersConfig.getSlaveConnectionMinimumIdleSize()).setSlaveConnectionPoolSize(clusterServersConfig.getSlaveConnectionPoolSize()).setReadMode(clusterServersConfig.getReadMode()).setSubscriptionMode(clusterServersConfig.getSubscriptionMode());}
            log.info("初始化 redis 配置");};}/**
     * 整合spring-cache
     */@BeanpublicCacheManagercacheManager(RedissonClient redissonClient){List<RedissonProperties.CacheGroup> cacheGroup = redissonProperties.getCacheGroup();Map<String,CacheConfig> config =newHashMap<>(16);for(RedissonProperties.CacheGroup group : cacheGroup){CacheConfig cacheConfig =newCacheConfig(group.getTtl(), group.getMaxIdleTime());
            cacheConfig.setMaxSize(group.getMaxSize());
            config.put(group.getGroupId(), cacheConfig);}returnnewRedissonSpringCacheManager(redissonClient, config,newJsonJacksonCodec(objectMapper));}}

注:EnableConfigurationPropertiess用法:

@EnableConfigurationProperties(RedissonProperties.class)是一个注解,用于启用将指定的配置类作为配置属性进行自动配置。

在Spring Boot应用程序中,通常使用@EnableConfigurationProperties注解来启用将配置属性绑定到特定的配置类。在这种情况下,RedissonProperties是用于绑定与Redisson相关的配置属性的配置类。

通过使用@EnableConfigurationProperties(RedissonProperties.class)注解,可以实现以下几点:

将RedissonProperties类作为配置属性类进行注册和加载。
自动将应用程序配置文件中与RedissonProperties相关的属性值与RedissonProperties类中的字段进行绑定。
可以通过在代码中注入RedissonProperties类的实例来获得配置的属性值,从而在应用程序中使用这些属性值。
这样,通过@EnableConfigurationProperties(RedissonProperties.class)注解,Redisson的配置属性就会被正确地加载和绑定,并能够在应用程序中使用这些配置。

2.3:Redisson使用

@RequiredArgsConstructor@Service@Slf4j@RefreshScopepublicclassServiceImplimplementsIService{@AutowiredprivateRedisDao redisDao;}
标签: spring boot redis java

本文转载自: https://blog.csdn.net/Harden_zsc/article/details/132275246
版权归原作者 昌昌苦练背后 所有, 如有侵权,请联系我们删除。

“redisson配置类---SpringBoot集成、redis单机和集群模式配置”的评论:

还没有评论