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