色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

springboot redis使用lettuce配置多數(shù)據(jù)源的實(shí)現(xiàn)

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

目前項(xiàng)目上需要連接兩個(gè)redis數(shù)據(jù)源,一個(gè)redis數(shù)據(jù)源是單機(jī)模式,一個(gè)redis數(shù)據(jù)源是分片集群模式,這里將具體配置列一下。

項(xiàng)目用的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數(shù)據(jù)源信息

redis: cluster: nodes: 127.0.0.1:9001 lettuce: #連接池配置 pool:#連接池最大連接數(shù)max-active: 20#連接池最大等待時(shí)間,負(fù)數(shù)表示不做限制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都沒(méi)有配置密碼)

二、添加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(); } /** * 配置第一個(gè)數(shù)據(jù)源的 * * @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; } /** * 配置第一個(gè)數(shù)據(jù)源的連接工廠 * 這里注意:需要添加@Primary 指定bean的名稱,目的是為了創(chuàng)建兩個(gè)不同名稱的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); } /** * 配置第一個(gè)數(shù)據(jù)源的RedisTemplate * 注意:這里指定使用名稱=factory 的 RedisConnectionFactory * 并且標(biāo)識(shí)第一個(gè)數(shù)據(jù)源是默認(rèn)數(shù)據(jù)源 @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) {//注意傳入的對(duì)象名和類型RedisStandaloneConfigurationLettuceClientConfiguration clientConfiguration = LettucePoolingClientConfiguration.builder().poolConfig(config).build();return new LettuceConnectionFactory(redisConfig, clientConfiguration); } /** * 單實(shí)例redis數(shù)據(jù)源 * * @param connectionFactory * @return */ @Bean('redisTemplateSingle') public RedisTemplate<String, Object> redisTemplateSingle(@Qualifier('factory2')LettuceConnectionFactory connectionFactory) {//注意傳入的對(duì)象名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

使用單實(shí)例redis

/** * redis 單節(jié)點(diǎn) */ @Resource(name = 'redisTemplateSingle') private RedisTemplate redisTemplateSingle;

使用redis集群

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

到此這篇關(guān)于springboot redis使用lettuce配置多數(shù)據(jù)源的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)springboot lettuce多數(shù)據(jù)源內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 国产美女午夜精品福利视频 | 91免费看视频| a级黄色毛片免费播放视频 a级精品九九九大片免费看 | 欧美色老头oldvideo | 最新国产三级在线不卡视频 | 欧美 日韩 国产 在线 | 99国产精品久久久久久久日本 | 荡公乱妇蒂芙尼中文字幕 | 久久综合久久久 | 久久免费公开视频 | 亚洲精品久一区 | 美国免费毛片 | 亚洲免费视频一区二区三区 | 波多野结衣在线观看一区 | 欧美性群另类交 | 波多野结衣在线观看一区 | 成人免费看黄网址 | 国内自拍网红在线综合 | 成人三级在线播放线观看 | 免费国产成人高清在线看软件 | 国内欧美一区二区三区 | 欧美亚洲日本视频 | 在线另类视频 | 免费午夜不卡毛片 | 国产精品香蕉一区二区三区 | 古代级a毛片在线 | 高清国产亚洲va精品 | 国产手机精品视频 | 天堂在线www网亚洲 天堂在线视频网站 | 又粗又爽又色男女乱淫播放男女 | 亚洲福利影院 | 免费一级视频在线播放 | 亚洲黄色免费网址 | 欧美成人爽毛片在线视频 | 久久一区二区三区免费播放 | 亚洲精品毛片久久久久久久 | 91视频站 | 成人毛片在线观看 | 性欧美17一18sex性高清播放 | 在线成人天天鲁夜啪视频 | 中国做爰国产精品视频 |