亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

springboot redis使用lettuce配置多數據源的實現

瀏覽:104日期:2023-03-14 10:22:46

目前項目上需要連接兩個redis數據源,一個redis數據源是單機模式,一個redis數據源是分片集群模式,這里將具體配置列一下。

項目用的springboot版本為

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.1.RELEASE</version><relativePath/> <!-- lookup parent from repository --> </parent>一、在yml中配置redis數據源信息

redis: cluster: nodes: 127.0.0.1:9001 lettuce: #連接池配置 pool:#連接池最大連接數max-active: 20#連接池最大等待時間,負數表示不做限制max-wait: -1#最大空閑連接max-idle: 9#最小空閑連接min-idle: 0 timeout: 500000 redis2: host: 127.0.0.1 port: 6385 lettuce: pool:max-active: 20max-idle: 8max-wait: -1min-idle: 0 timeout: 500000

(這里的redis都沒有配置密碼)

二、添加redis配置類

package com.cq.config; import cn.hutool.core.convert.Convert;import org.apache.commons.pool2.impl.GenericObjectPoolConfig;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Primary;import org.springframework.core.env.Environment;import org.springframework.core.env.MapPropertySource;import org.springframework.data.redis.connection.RedisClusterConfiguration;import org.springframework.data.redis.connection.RedisConnectionFactory;import org.springframework.data.redis.connection.RedisStandaloneConfiguration;import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration;import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;import org.springframework.data.redis.connection.lettuce.LettucePoolingClientConfiguration;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.serializer.RedisSerializer;import org.springframework.data.redis.serializer.StringRedisSerializer; import java.io.Serializable;import java.util.HashMap;import java.util.Map; /** * @author cccccloud on 2020/11/16 17:16 */@Configurationpublic class RedisConfig { @Autowired private Environment environment; @Value('${spring.redis2.host}') private String host; @Value('${spring.redis2.port}') private String port; @Value('${spring.redis2.lettuce.pool.max-active}') private String max_active; @Value('${spring.redis2.lettuce.pool.max-idle}') private String max_idle; @Value('${spring.redis2.lettuce.pool.max-wait}') private String max_wait; @Value('${spring.redis2.lettuce.pool.min-idle}') private String min_idle; /** * 配置lettuce連接池 * * @return */ @Bean @Primary @ConfigurationProperties(prefix = 'spring.redis.cluster.lettuce.pool') public GenericObjectPoolConfig redisPool() {return new GenericObjectPoolConfig(); } /** * 配置第一個數據源的 * * @return */ @Bean('redisClusterConfig') @Primary public RedisClusterConfiguration redisClusterConfig() { Map<String, Object> source = new HashMap<>(8);source.put('spring.redis.cluster.nodes', environment.getProperty('spring.redis.cluster.nodes'));RedisClusterConfiguration redisClusterConfiguration;redisClusterConfiguration = new RedisClusterConfiguration(new MapPropertySource('RedisClusterConfiguration', source));redisClusterConfiguration.setPassword(environment.getProperty('spring.redis.password'));return redisClusterConfiguration; } /** * 配置第一個數據源的連接工廠 * 這里注意:需要添加@Primary 指定bean的名稱,目的是為了創建兩個不同名稱的LettuceConnectionFactory * * @param redisPool * @param redisClusterConfig * @return */ @Bean('lettuceConnectionFactory') @Primary public LettuceConnectionFactory lettuceConnectionFactory(GenericObjectPoolConfig redisPool, @Qualifier('redisClusterConfig') RedisClusterConfiguration redisClusterConfig) {LettuceClientConfiguration clientConfiguration = LettucePoolingClientConfiguration.builder().poolConfig(redisPool).build();return new LettuceConnectionFactory(redisClusterConfig, clientConfiguration); } /** * 配置第一個數據源的RedisTemplate * 注意:這里指定使用名稱=factory 的 RedisConnectionFactory * 并且標識第一個數據源是默認數據源 @Primary * * @param redisConnectionFactory * @return */ @Bean('redisTemplate') @Primary public RedisTemplate redisTemplate(@Qualifier('lettuceConnectionFactory') RedisConnectionFactory redisConnectionFactory) {RedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(redisConnectionFactory); StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();// key采用String的序列化方式template.setKeySerializer(stringRedisSerializer);// hash的key也采用String的序列化方式template.setHashKeySerializer(stringRedisSerializer);// value序列化方式采用jacksontemplate.setValueSerializer(stringRedisSerializer);// hash的value序列化方式采用jacksontemplate.setHashValueSerializer(stringRedisSerializer);template.afterPropertiesSet(); return template; } @Bean public GenericObjectPoolConfig redisPool2() {GenericObjectPoolConfig config = new GenericObjectPoolConfig();config.setMinIdle(Convert.toInt(min_idle));config.setMaxIdle(Convert.toInt(max_idle));config.setMaxTotal(Convert.toInt(max_active));config.setMaxWaitMillis(Convert.toInt(max_wait));return config; } @Bean public RedisStandaloneConfiguration redisConfig2() {RedisStandaloneConfiguration redisConfig = new RedisStandaloneConfiguration(host,Convert.toInt(port));return redisConfig; } @Bean('factory2') public LettuceConnectionFactory factory2(@Qualifier('redisPool2') GenericObjectPoolConfig config, @Qualifier('redisConfig2') RedisStandaloneConfiguration redisConfig) {//注意傳入的對象名和類型RedisStandaloneConfigurationLettuceClientConfiguration clientConfiguration = LettucePoolingClientConfiguration.builder().poolConfig(config).build();return new LettuceConnectionFactory(redisConfig, clientConfiguration); } /** * 單實例redis數據源 * * @param connectionFactory * @return */ @Bean('redisTemplateSingle') public RedisTemplate<String, Object> redisTemplateSingle(@Qualifier('factory2')LettuceConnectionFactory connectionFactory) {//注意傳入的對象名RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();redisTemplate.setConnectionFactory(connectionFactory); RedisSerializer<String> redisSerializer = new StringRedisSerializer();redisTemplate.setKeySerializer(redisSerializer);redisTemplate.setValueSerializer(redisSerializer);redisTemplate.setHashKeySerializer(redisSerializer);redisTemplate.setHashValueSerializer(redisSerializer);return redisTemplate; }}三、使用redis

使用單實例redis

/** * redis 單節點 */ @Resource(name = 'redisTemplateSingle') private RedisTemplate redisTemplateSingle;

使用redis集群

/** * redis 集群 */ @Resource(name = 'redisTemplate') private RedisTemplate redisTemplate;

到此這篇關于springboot redis使用lettuce配置多數據源的實現的文章就介紹到這了,更多相關springboot lettuce多數據源內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
主站蜘蛛池模板: 国产精品一区二区三区四区五区 | 亚洲视频免 | 久久精品韩国三级 | 麻豆国产精品 | 欧美成人免费全部色播 | 亚洲无线一二三四区手机 | 国内免费在线视频 | 亚洲综合色婷婷久久 | 老司机成人午夜精品福利视频 | 可以免费观看的一级毛片 | 国产精品亚洲片在线观看麻豆 | 国产精品国色综合久久 | 亚洲欧美一级久久精品 | 人成精品视频三区二区一区 | 一区二区三区免费视频观看 | 久青草国产高清在线视频 | 国产人成亚洲第一网站在线播放 | 国产成人久久精品二区三区 | 日韩视频免费在线观看 | 欧美人妖xxx | 黄色一级在线观看 | 草逼网址| 亚洲xxxx视频 | 成人精品福利 | 国产日产欧产精品 | 中文字幕亚洲无线码高清 | 国产成人ae在线观看网站站 | www.日韩| 欧美成人精品欧美一级乱黄 | 看大片免费一 | 日韩在线免费看 | 国产日本在线 | 国产视频三级 | 开心网五月色婷婷综合图片 | 亚洲人成激情在线播放 | 污网站网址 | 日本aaaa特级毛片 | 成人欧美一区二区三区白人 | 国内精品在线视频 | 久久一本久综合久久爱 | 在线一区 |