日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringBoot2.1.9 多Redis Lettuce配置

發布時間:2023/12/3 javascript 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot2.1.9 多Redis Lettuce配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、配置文件

pom.xml

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency>

application.yml

spring:application:name: double-redis-lettuceprofiles:active: devjackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT+8server:port: 8008sys:redis:one: host: 192.168.1.2port: 5009timeout: 6000lettuce:pool:max-active: 30max-idle: 10max-wait: 6000slave:host: 192.168.1.3port: 5010database: 1two:timeout: 12000lettuce:pool:max-active: 30max-idle: 10max-wait: 6000sentinel:master: redis_sentinel_masternodes:- sentinel-group001.mk.com:10003- sentinel-group002.mk.com:10003- sentinel-group003.mk.com:10003

二、配置Configuration Bean

Lettuce配置基類

public class AbstractLettuceRedisConfig {public LettuceConnectionFactory createLettuceConnectionFactory(ClientResources clientResources, RedisProperties properties) {LettuceClientConfiguration clientConfiguration = getLettuceClientConfiguration(clientResources, properties);RedisSentinelConfiguration sentinelConf = getSentinelConfig(properties);if (sentinelConf != null) {return new LettuceConnectionFactory(sentinelConf, clientConfiguration);}RedisClusterConfiguration clusterConf = getClusterConfiguration(properties);if (clusterConf != null) {return new LettuceConnectionFactory(clusterConf, clientConfiguration);}return new LettuceConnectionFactory(getStandaloneConfig(properties), clientConfiguration);}private RedisStandaloneConfiguration getStandaloneConfig(RedisProperties properties) {RedisStandaloneConfiguration config = new RedisStandaloneConfiguration();if (StringUtils.hasText(properties.getUrl())) {ConnectionInfo connectionInfo = parseUrl(properties.getUrl());config.setHostName(connectionInfo.getHostName());config.setPort(connectionInfo.getPort());config.setPassword(RedisPassword.of(connectionInfo.getPassword()));} else {config.setHostName(properties.getHost());config.setPort(properties.getPort());config.setPassword(RedisPassword.of(properties.getPassword()));}config.setDatabase(properties.getDatabase());return config;}private RedisClusterConfiguration getClusterConfiguration(RedisProperties properties) {if (properties.getCluster() == null) {return null;}RedisProperties.Cluster clusterProperties = properties.getCluster();RedisClusterConfiguration config = new RedisClusterConfiguration(clusterProperties.getNodes());if (clusterProperties.getMaxRedirects() != null) {config.setMaxRedirects(clusterProperties.getMaxRedirects());}if (properties.getPassword() != null) {config.setPassword(RedisPassword.of(properties.getPassword()));}return config;}private RedisSentinelConfiguration getSentinelConfig(RedisProperties properties) {RedisProperties.Sentinel sentinelProperties = properties.getSentinel();if (sentinelProperties != null) {RedisSentinelConfiguration config = new RedisSentinelConfiguration();config.master(sentinelProperties.getMaster());config.setSentinels(createSentinels(sentinelProperties));if (properties.getPassword() != null) {config.setPassword(RedisPassword.of(properties.getPassword()));}config.setDatabase(properties.getDatabase());return config;}return null;}private List<RedisNode> createSentinels(RedisProperties.Sentinel sentinel) {List<RedisNode> nodes = new ArrayList<>();for (String node : sentinel.getNodes()) {try {String[] parts = StringUtils.split(node, ":");Assert.state(parts.length == 2, "Must be defined as 'host:port'");nodes.add(new RedisNode(parts[0], Integer.valueOf(parts[1])));} catch (RuntimeException ex) {throw new IllegalStateException("Invalid redis sentinel " + "property '" + node + "'", ex);}}return nodes;}private LettuceClientConfiguration getLettuceClientConfiguration(ClientResources clientResources, RedisProperties properties) {LettuceClientConfiguration.LettuceClientConfigurationBuilder builder = createBuilder(Optional.ofNullable(properties.getLettuce()).map(v -> v.getPool()).orElse(null));applyProperties(builder, properties);if (StringUtils.hasText(properties.getUrl())) {customizeConfigurationFromUrl(builder, properties);}builder.clientResources(clientResources);return builder.build();}private LettuceClientConfiguration.LettuceClientConfigurationBuilder createBuilder(RedisProperties.Pool pool) {if (pool == null) {return LettuceClientConfiguration.builder();}return new PoolBuilderFactory().createBuilder(pool);}private LettuceClientConfiguration.LettuceClientConfigurationBuilder applyProperties(LettuceClientConfiguration.LettuceClientConfigurationBuilder builder, RedisProperties properties) {if (properties.isSsl()) {builder.useSsl();}if (properties.getTimeout() != null) {builder.commandTimeout(properties.getTimeout());}if (properties.getLettuce() != null) {RedisProperties.Lettuce lettuce = properties.getLettuce();if (lettuce.getShutdownTimeout() != null && !lettuce.getShutdownTimeout().isZero()) {builder.shutdownTimeout(properties.getLettuce().getShutdownTimeout());}}return builder;}private void customizeConfigurationFromUrl(LettuceClientConfiguration.LettuceClientConfigurationBuilder builder, RedisProperties properties) {ConnectionInfo connectionInfo = parseUrl(properties.getUrl());if (connectionInfo.isUseSsl()) {builder.useSsl();}}private ConnectionInfo parseUrl(String url) {try {URI uri = new URI(url);boolean useSsl = (url.startsWith("rediss://"));String password = null;if (uri.getUserInfo() != null) {password = uri.getUserInfo();int index = password.indexOf(':');if (index >= 0) {password = password.substring(index + 1);}}return new ConnectionInfo(uri, useSsl, password);} catch (URISyntaxException ex) {throw new IllegalArgumentException("Malformed url '" + url + "'", ex);}}private static class ConnectionInfo {private final URI uri;private final boolean useSsl;private final String password;public ConnectionInfo(URI uri, boolean useSsl, String password) {this.uri = uri;this.useSsl = useSsl;this.password = password;}public boolean isUseSsl() {return this.useSsl;}public String getHostName() {return this.uri.getHost();}public int getPort() {return this.uri.getPort();}public String getPassword() {return this.password;}}private static class PoolBuilderFactory {public LettuceClientConfiguration.LettuceClientConfigurationBuilder createBuilder(RedisProperties.Pool properties) {return LettucePoolingClientConfiguration.builder().poolConfig(getPoolConfig(properties));}private GenericObjectPoolConfig<?> getPoolConfig(RedisProperties.Pool properties) {GenericObjectPoolConfig<?> config = new GenericObjectPoolConfig<>();config.setMaxTotal(properties.getMaxActive());config.setMaxIdle(properties.getMaxIdle());config.setMinIdle(properties.getMinIdle());if (properties.getTimeBetweenEvictionRuns() != null) {config.setTimeBetweenEvictionRunsMillis(properties.getTimeBetweenEvictionRuns().toMillis());}if (properties.getMaxWait() != null) {config.setMaxWaitMillis(properties.getMaxWait().toMillis());}return config;}}}

(1)第一個Redis配置

public class OneLettuceRedisConfig extends AbstractLettuceRedisConfig{@Beanpublic StringRedisTemplate oneStringRedisTemplate(@Autowired @Qualifier("oneRedisConnectionFactory") RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {StringRedisTemplate template = new StringRedisTemplate();template.setConnectionFactory(redisConnectionFactory);return template;}@Beanpublic LettuceConnectionFactory oneRedisConnectionFactory(@Autowired @Qualifier("oneRedisProperties") RedisProperties properties,ClientResources clientResources) throws UnknownHostException {return createLettuceConnectionFactory(clientResources, properties);}@Bean@ConfigurationProperties("sys.redis.one")public RedisProperties oneRedisProperties() {return new RedisProperties();} }

(2)第二個Redis配置(主)

public class TwoLettuceRedisConfig extends AbstractLettuceRedisConfig{@Primary@Beanpublic StringRedisTemplate twoStringRedisTemplate(@Autowired @Qualifier("twoRedisConnectionFactory") RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {StringRedisTemplate template = new StringRedisTemplate();template.setConnectionFactory(redisConnectionFactory);return template;}@Primary@Beanpublic LettuceConnectionFactory twoRedisConnectionFactory(@Autowired @Qualifier("twoRedisProperties") RedisProperties properties,ClientResources clientResources) throws UnknownHostException {return createLettuceConnectionFactory(clientResources, properties);}@Primary@Bean@ConfigurationProperties("sys.redis.two")public RedisProperties twoRedisProperties() {return new RedisProperties();} }

(3)redis導入配置

@Configuration @Import({OneLettuceRedisConfig.class, TwoLettuceRedisConfig.class}) public class RedisConfig {}

注意:去掉默認自動配置

@SpringBootApplication(exclude = {RedisAutoConfiguration.class}) public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}}

總結

以上是生活随笔為你收集整理的SpringBoot2.1.9 多Redis Lettuce配置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美性猛交7777777 | 少妇太爽了在线观看 | 福利片av | 日韩av伦理 | 精品久久99 | 久热国产在线 | 91精品999| 亚洲特黄一级片 | 围产精品久久久久久久 | 五月天婷婷激情 | 天堂国产在线 | 久久精品欧美一区二区三区麻豆 | 天堂网在线观看 | 日本免费在线观看 | 国产美女无遮挡免费 | 色欧美在线| 欧美午夜在线观看 | 日韩影视在线 | 91传媒入口| 国产精品一区二区自拍 | 日韩在线综合 | 欧美理论在线 | 国产一二三 | 一区二区三区免费播放 | 成人精品在线看 | 一级片小视频 | 成人毛片一区二区三区 | 超碰麻豆 | 国产视频1区2区3区 国产欧美一区二区精品性色99 | 伊朗做爰xxxⅹ性视频 | 欧美操女人 | 狠狠爱亚洲 | 中文字幕欧美人妻精品 | 四色成人 | 日韩激情网址 | 日日操日日干 | 亚洲一级av毛片 | 亚洲欧美自拍偷拍 | 成人免费一区二区 | 中文字幕av一区二区 | 日本久久黄色 | 欧美a√在线 | 国产特级aaaaaa大片 | 天堂色区| 肉视频在线观看 | 免费av观看网站 | 国产三区在线观看 | 人人爽人人射 | 色播视频在线观看 | 日日干夜夜撸 | 亚洲精品动漫在线观看 | 999国产在线| 97精品人妻一区二区三区在线 | 国产欧美精品在线观看 | 日韩av在线免费看 | 男女视频免费 | 欧美伊人久久 | 精品无码一区二区三区 | 一区二区三区四区国产 | 泷泽萝拉在线播放 | 精品在线视频一区 | 久久久片| 肉色超薄丝袜脚交一区二区图片 | 久久久国产精品一区二区三区 | 2021狠狠干 | 91青草视频| 欧美久久久久久又粗又大 | 亚洲午夜福利一区二区三区 | 成人欧美一区二区三区黑人冫 | 午夜性色福利影院 | 999精品视频在线观看 | 好男人.www| 欧美88av | 国产福利专区 | 日韩亚洲一区二区三区 | 日日夜夜狠狠干 | 成人一级生活片 | 婷婷色六月 | 亚洲精品高清在线 | 男女在线观看 | 波多野吉衣在线视频 | 国产素人在线观看 | 婷婷精品视频 | 欧美交 | 97在线观看视频免费 | 日本电影成人 | 人妻射精一区二区 | 亚洲精品视频免费 | 免费麻豆 | 欧美日韩综合在线 | 91精品国产日韩91久久久久久 | 91天天 | 好男人在线视频 | 免费在线观看网址入口 | 日韩欧美在线观看免费 | 一级大黄毛片 | 亚洲图片一区 | 欧美一区二区三区婷婷月色 | 色成人亚洲 |