一、配置文件

pom.xml

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><!--注意:只有2.x版本才支持,3.x版本不兼容报错NoClassDefFoundError:redis/clients/util/SafeEncoder --><version>2.9.3</version>
</dependency>

application.xml

spring:application:name: double-redis-jedisprofiles:active: devjackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT+8server:port: 8008sys:redis:one:    host: 192.168.1.2port: 5009timeout: 6000jedis:pool:max-active: 30max-idle: 10max-wait: 6000slave:host: 192.168.1.3port: 5010database: 1two:timeout: 12000jedis: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

Jedis配置基类

public abstract class AbstractJedisRedisConfig {public JedisConnectionFactory createJedisConnectionFactory(RedisProperties properties) {JedisClientConfiguration clientConfiguration = getJedisClientConfiguration(properties);RedisSentinelConfiguration sentinelConf = getSentinelConfig(properties);if (sentinelConf != null) {return new JedisConnectionFactory(sentinelConf, clientConfiguration);}RedisClusterConfiguration clusterConf = getClusterConfiguration(properties);if (clusterConf != null) {return new JedisConnectionFactory(clusterConf, clientConfiguration);}return new JedisConnectionFactory(getStandaloneConfig(properties), clientConfiguration);}private JedisClientConfiguration getJedisClientConfiguration(RedisProperties properties) {JedisClientConfiguration.JedisClientConfigurationBuilder builder = applyProperties(JedisClientConfiguration.builder(), properties);RedisProperties.Pool pool = properties.getJedis().getPool();if (pool != null) {applyPooling(pool, builder);}if (StringUtils.hasText(properties.getUrl())) {customizeConfigurationFromUrl(builder, properties);}return builder.build();}private JedisClientConfiguration.JedisClientConfigurationBuilder applyProperties(JedisClientConfiguration.JedisClientConfigurationBuilder builder,RedisProperties properties) {if (properties.isSsl()) {builder.useSsl();}if (properties.getTimeout() != null) {Duration timeout = properties.getTimeout();builder.readTimeout(timeout).connectTimeout(timeout);}return builder;}private void applyPooling(RedisProperties.Pool pool,JedisClientConfiguration.JedisClientConfigurationBuilder builder) {builder.usePooling().poolConfig(jedisPoolConfig(pool));}private JedisPoolConfig jedisPoolConfig(RedisProperties.Pool pool) {JedisPoolConfig config = new JedisPoolConfig();config.setMaxTotal(pool.getMaxActive());config.setMaxIdle(pool.getMaxIdle());config.setMinIdle(pool.getMinIdle());if (pool.getTimeBetweenEvictionRuns() != null) {config.setTimeBetweenEvictionRunsMillis(pool.getTimeBetweenEvictionRuns().toMillis());}if (pool.getMaxWait() != null) {config.setMaxWaitMillis(pool.getMaxWait().toMillis());}return config;}private void customizeConfigurationFromUrl(JedisClientConfiguration.JedisClientConfigurationBuilder builder, RedisProperties properties) {ConnectionInfo connectionInfo = parseUrl(properties.getUrl());if (connectionInfo.isUseSsl()) {builder.useSsl();}}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 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 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 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;}}
}

(1)第一个Redis配置

public class OneJedisRedisConfig  extends AbstractJedisRedisConfig{@Beanpublic StringRedisTemplate oneStringRedisTemplate(@Autowired @Qualifier("oneRedisConnectionFactory")RedisConnectionFactory redisConnectionFactory){StringRedisTemplate template = new StringRedisTemplate();template.setConnectionFactory(redisConnectionFactory);return template;}@Beanpublic JedisConnectionFactory oneRedisConnectionFactory(@Autowired @Qualifier("oneRedisProperties") RedisProperties properties){return createJedisConnectionFactory(properties);}@Bean@ConfigurationProperties("sys.redis.one")public RedisProperties oneRedisProperties() {return new RedisProperties();}
}

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

public class TwoJedisRedisConfig extends AbstractJedisRedisConfig{@Primary@Beanpublic StringRedisTemplate twoStringRedisTemplate(@Autowired @Qualifier("twoRedisConnectionFactory")RedisConnectionFactory redisConnectionFactory) {StringRedisTemplate template = new StringRedisTemplate();template.setConnectionFactory(redisConnectionFactory);return template;}@Primary@Beanpublic JedisConnectionFactory twoRedisConnectionFactory(@Autowired @Qualifier("twoRedisProperties") RedisProperties properties){return createJedisConnectionFactory(properties);}@Primary@Bean@ConfigurationProperties("sys.redis.two")public RedisProperties twoRedisProperties() {return new RedisProperties();}
}

(3)redis导入配置

@Configuration
@Import({OneRedisConfig.class, TwoRedisConfig.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 Jedis配置相关推荐

  1. SpringBoot2.1.9 多Redis Lettuce配置

    一.配置文件 pom.xml <dependency><groupId>org.springframework.boot</groupId><artifact ...

  2. 一次redis连接配置修改引发的redis.clients.jedis.exceptions.JedisConnectionException: Unexpected end of stream.异常

    一次redis连接配置修改引发的redis.clients.jedis.exceptions.JedisConnectionException: Unexpected end of stream.异常 ...

  3. springboot2.5.0 整合 redis 配置详解

    1. pom添加依赖 <!--redis--><dependency><groupId>org.springframework.boot</groupId&g ...

  4. 征服 Redis + Jedis + Spring (一)—— 配置常规操作(GET SET DEL)

    有日子没写博客了,真的是忙得要疯掉. 完成项目基础架构搭建工作,解决了核心技术问题,接着需要快速的调研下基于Spring框架下的Redis操作. 相关链接: 征服 Redis 征服 Redis + J ...

  5. Redis:Spring框架下Redis的配置和调用,xml文件中redis的配置,redisTemplate的使用和jedis的使用

    老规矩了,再次重复一遍,配置XML文件为Spring框架所属,所使用的框架是Spring,非SpringBoot!!! Spring框架整合Redis并且使用 1.配置文件 <bean clas ...

  6. Redis主从配置及通过Keepalived实现Redis自动切换高可用

    Redis主从配置及通过Keepalived实现Redis自动切换高可用 [日期:2014-07-23] 来源:Linux社区  作者:fuquanjun [字体:大 中 小] 一:环境介绍: Mas ...

  7. 使用Servlet 3.0,Redis / Jedis和CDI的简单CRUD –第2部分

    在本文中,我们将重点介绍CDI和Servlet 3.0. 您可以在此处看到第1部分. 让我们从CDI开始. 当我开始撰写源自该系列的文章时,我并没有考虑撰写CDI. 真诚地说,我以前从未使用过. 这篇 ...

  8. Redis常见配置介绍

    Windows Redis 安装 链接: https://pan.baidu.com/s/1MJnzX_qRuNXJI09euzkPGA 提取码: 2c6w 复制这段内容后打开百度网盘手机App,操作 ...

  9. Springboot整合redis+jedis

    Spring Boot整合Redis+Jedis 1)在pom.xml添加Redis依赖Jedis依赖和,示例代码如下 <!-- <version>2.1.5.RELEASE< ...

最新文章

  1. 八年级计算机网络公开课,计算机网络公开课教案.doc
  2. UI自动化测试中的页面定位问题,年薪50W软件测试工程师为你解答
  3. |DataDirectory|的使用
  4. 手机直播系统源码搭建说明
  5. 【r语言】如何将直方图和一条曲线画在一起(叠在一张图上)
  6. Windows远程Linux/Ubuntu桌面
  7. Qt智能指针--QWeakPointer
  8. zend studio
  9. 安装oracle后,电脑变卡变慢的解决办法
  10. 记一次 .NET 某教育系统 异常崩溃分析
  11. 通信与计算机网络FSC,数据通信与计算机网络概述信道习题.pdf
  12. 关于SQL server事务
  13. USACO1.1.3 - Friday the Thirteenth
  14. 《剑指offer》面试题30——最小的k 个数
  15. php创建文件目录,及删除目录和文件
  16. 计算机组成原理第五版(白中英)第七章外存与I/O设备 习题
  17. 项目管理的方法论 一
  18. npm安装vant(有赞UI)框架 - cmd篇
  19. Unit 3-Lecture 5: The Pigeonhole Principle and Inclusion-Exclusion
  20. 青轩桃李能几何,流光欺人忽蹉跎。 poll

热门文章

  1. 南阳理工计算机全国排名,全国工科实力最强的10所高校排名,
  2. 107. 二叉树的层序遍历 II and 102. 二叉树的层序遍历 023(BFS模板题打两道)
  3. [C++11]指针空值类型nullptr
  4. 算法-排序-快速排序(包含多种快速排序)
  5. java基础知识——面向对象基本概念
  6. 双向dcdc变换器simulink仿真_二极管箝位五电平变换器Simulin仿真
  7. 经典排序算法(2)——快速排序算法详解
  8. 【LOJ6363】「地底蔷薇」【点双】【指数型生成函数】【扩展拉格朗日反演】【多项式幂函数】
  9. Acwing202. 最幸运的数字
  10. CodeForces 1517G Starry Night Camping(网络流最小割)