详解springboot配置多个redis连接

 更新时间:2017年04月19日 11:09:33   作者:十丿四   我要评论
Spring Boot为Redis, MongoDB, Elasticsearch, Solr和Gemfire提供自动配置。本文详细介绍了springboot配置多个redis连接,有兴趣的可以了解一下。

一、springboot nosql 简介

Spring Data提供其他项目,用来帮你使用各种各样的NoSQL技术,包括MongoDB, Neo4J, Elasticsearch, Solr, Redis,Gemfire, Couchbase和Cassandra。Spring Boot为Redis, MongoDB, Elasticsearch, Solr和Gemfire提供自动配置。你可以充分利用其他项目,但你需要自己配置它们。

1.1、Redis

Redis是一个缓存,消息中间件及具有丰富特性的键值存储系统。Spring Boot为Jedis客户端库和由Spring Data Redis提供的基于Jedis客户端的抽象提供自动配置。 spring-boot-starter-redis 'Starter POM'为收集依赖提供一种便利的方式。
Redis添加maven依赖

   <dependency> 
  <groupId>org.springframework.boot</groupId> 
  <artifactId>spring-boot-starter-test</artifactId> 
  <scope>test</scope> 
</dependency> 
<dependency> 
  <groupId>org.springframework.boot</groupId> 
  <artifactId>spring-boot-starter</artifactId> 
  <!-- <version>1.3.5.RELEASE</version> --> 
</dependency> 
<!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-commons --> 
<dependency> 
  <groupId>org.springframework.boot</groupId> 
  <artifactId>spring-boot-starter-redis</artifactId> 
  <!-- <version>1.3.6.RELEASE</version> --> 
</dependency> 

1.2连接Redis

你可以注入一个自动配置的RedisConnectionFactory,StringRedisTemplate或普通的跟其他Spring Bean相同的RedisTemplate实例。默认情况下,这个实例将尝试使用localhost:6379连接Redis服务器。

@Component 
public class MyBean { 
private StringRedisTemplate template; 
@Autowired 
public MyBean(StringRedisTemplate template) { 
this.template = template; 
} 
// ... 
} 

如果你添加一个你自己的任何自动配置类型的@Bean,它将替换默认的(除了RedisTemplate的情况,它是根据bean的名称'redisTemplate'而不是它的类型进行排除的)。如果在classpath路径下存在commons-pool2,默认你会获得一个连接池工厂。

1.3 建立多个redis连接

使用redis的默认配置可以连接到redis中的0库中,如果指定库连接需要配置indexdb,同时如果需要连接多个redis服务,也需要同时配置多个数据源

1.3.1、application.yml 文件 中增加:

@Component 
public class MyBean { 
private StringRedisTemplate template; 
@Autowired 
public MyBean(StringRedisTemplate template) { 
this.template = template; 
} 
// ... 
} 

1.3.2、创建redisconfiguration

@Configuration 
public class Redis137_11Configuration { 
  @Bean(name = "redis123Template") 
  public StringRedisTemplate redisTemplate( 
      @Value("${redis123.hostName}") String hostName, 
      @Value("${redis123.port}") int port, 
      @Value("${redis123.password}") String password, 
      @Value("${redis123.maxIdle}") int maxIdle, 
      @Value("${redis123.maxTotal}") int maxTotal, 
      @Value("${redis123.index}") int index, 
      @Value("${redis123.maxWaitMillis}") long maxWaitMillis, 
      @Value("${redis123.testOnBorrow}") boolean testOnBorrow) { 
    StringRedisTemplate temple = new StringRedisTemplate(); 
    temple.setConnectionFactory(connectionFactory(hostName, port, password, 
        maxIdle, maxTotal, index, maxWaitMillis, testOnBorrow)); 
    return temple; 
  } 
  public RedisConnectionFactory connectionFactory(String hostName, int port, 
      String password, int maxIdle, int maxTotal, int index, 
      long maxWaitMillis, boolean testOnBorrow) { 
    JedisConnectionFactory jedis = new JedisConnectionFactory(); 
    jedis.setHostName(hostName); 
    jedis.setPort(port); 
    if (!StringUtils.isEmpty(password)) { 
      jedis.setPassword(password); 
    } 
    if (index != 0) { 
      jedis.setDatabase(index); 
    } 
    jedis.setPoolConfig(poolCofig(maxIdle, maxTotal, maxWaitMillis, 
        testOnBorrow)); 
    // 初始化连接pool 
    jedis.afterPropertiesSet(); 
    RedisConnectionFactory factory = jedis; 
    return factory; 
  } 
  public JedisPoolConfig poolCofig(int maxIdle, int maxTotal, 
      long maxWaitMillis, boolean testOnBorrow) { 
    JedisPoolConfig poolCofig = new JedisPoolConfig(); 
    poolCofig.setMaxIdle(maxIdle); 
    poolCofig.setMaxTotal(maxTotal); 
    poolCofig.setMaxWaitMillis(maxWaitMillis); 
    poolCofig.setTestOnBorrow(testOnBorrow); 
    return poolCofig; 
  } 
} 

1.3.3、声明redis抽象基类,创建redis的操作方法

public abstract class AbRedisConfiguration { 
  protected StringRedisTemplate temple; 
  public void setData(String key, String value) { 
    getTemple().opsForValue().set(key, value); 
  } 
  public String getData(String key) { 
    return getTemple().opsForValue().get(key); 
  } 
  public StringRedisTemplate getTemple() { 
    return temple; 
  } 
} 

1.3.4、根据数据源,创建不同的子类@Component

public class Redis123 extends AbRedisConfiguration { 
  @Resource(name = "redis123Template") 
  private StringRedisTemplate temple; 
  public StringRedisTemplate getTemple() { 
    return temple; 
  } 
} 

ps:类和子类中同时声明了getTemple方法和 StringRedisTemple属性,子类通过重写父类的getTeimple方法,把子类的自己StringRedisTemple 属性 传给 父类,父类通过子类传递过来的StringRedisTemple使用不通的数据链接来操作缓存。至此,父类完成所有的操作方法,而当需要创建一个金沙国际官网连接时,只需要在创建一个子类,被声明自己的StringRedisTemple,并传给父类即可。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持澳门金沙网上娱乐。

相关文章

  • spring boot自带图片服务器使用详解

    spring boot自带图片服务器使用详解

    这篇文章主要为大家详细介绍了spring boot自带图片服务器的使用 ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • 基于socket和javaFX简单文件传输工具

    基于socket和javaFX简单文件传输工具

    这篇文章主要介绍了基于socket和javaFX简单文件传输工具的相关资料,需要的朋友可以参考下
    2016-02-02
  • Kafka使用Java客户端进行访问的示例代码

    Kafka使用Java客户端进行访问的示例代码

    本篇文章主要介绍了Kafka使用Java客户端进行访问的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Java消息队列的简单实现代码

    Java消息队列的简单实现代码

    本篇文章主要介绍了Java消息队列的简单实现代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • Spring Data MongoDB 金沙国际官网批量操作的方法

    Spring Data MongoDB 金沙国际官网批量操作的方法

    在项目开发中经常会批量插入数据和更新数据的操作,这篇文章主要介绍了Spring Data MongoDB 金沙国际官网批量操作的方法,非常具有实用价值,需要的朋友可以参考下
    2018-11-11
  • JAVA 时间区间的字符串合法性验证

    JAVA 时间区间的字符串合法性验证

    需要对获得的诸如08:30-11:00这样的字符串进行合法性验证,判定表示的时间区间是否合法,以及对高峰期时间的区间是否在总的时间区间内部进行判断。
    2013-03-03
  • Mybatis动态调用表名和字段名的解决方法

    Mybatis动态调用表名和字段名的解决方法

    今天在项目开发中有个业务是需要限制各个用户对某些表里的字段查询以及某些字段是否显示,这种情况下,就需要构建sql来动态传入表名、字段名了,下面给大家介绍mybatis动态调用表名和字段名的解决方法,一起看看吧
    2016-10-10
  • Spring Boot的listener(监听器)简单使用实例详解

    Spring Boot的listener(监听器)简单使用实例详解

    监听器(Listener)的注册方法和 Servlet 一样,有两种方式:代码注册或者注解注册。接下来通过本文给大家介绍Spring Boot的listener(监听器)简单使用,需要的朋友可以参考下
    2017-04-04
  • SpringBoot + SpringSecurity 环境搭建的步骤

    SpringBoot + SpringSecurity 环境搭建的步骤

    这篇文章主要介绍了SpringBoot + SpringSecurity 环境搭建的步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • 解决 IDEA 创建 Gradle 项目没有src目录问题

    解决 IDEA 创建 Gradle 项目没有src目录问题

    这篇文章主要介绍了解决 IDEA 创建 Gradle 项目没有src目录问题,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-06-06

最新评论