国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 詳解springboot配置多個redis連接

詳解springboot配置多個redis連接

2020-09-13 15:15十丿四 Java教程

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是一個緩存,消息中間件及具有豐富特性的鍵值存儲系統(tǒng)。Spring Boot為Jedis客戶端庫和由Spring Data Redis提供的基于Jedis客戶端的抽象提供自動配置。 spring-boot-starter-redis 'Starter POM'為收集依賴提供一種便利的方式。
Redis添加maven依賴

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
   <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服務器。

?
1
2
3
4
5
6
7
8
9
@Component
public class MyBean {
private StringRedisTemplate template;
@Autowired
public MyBean(StringRedisTemplate template) {
this.template = template;
}
// ...
}

如果你添加一個你自己的任何自動配置類型的@Bean,它將替換默認的(除了RedisTemplate的情況,它是根據(jù)bean的名稱'redisTemplate'而不是它的類型進行排除的)。如果在classpath路徑下存在commons-pool2,默認你會獲得一個連接池工廠。

1.3 建立多個redis連接

使用redis的默認配置可以連接到redis中的0庫中,如果指定庫連接需要配置indexdb,同時如果需要連接多個redis服務,也需要同時配置多個數(shù)據(jù)源

1.3.1、application.yml 文件 中增加:

?
1
2
3
4
5
6
7
8
9
@Component
public class MyBean {
private StringRedisTemplate template;
@Autowired
public MyBean(StringRedisTemplate template) {
this.template = template;
}
// ...
}

1.3.2、創(chuàng)建redisconfiguration

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
@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抽象基類,創(chuàng)建redis的操作方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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、根據(jù)數(shù)據(jù)源,創(chuàng)建不同的子類@Component

?
1
2
3
4
5
6
7
8
9
public class Redis123 extends AbRedisConfiguration {
 
  @Resource(name = "redis123Template")
  private StringRedisTemplate temple;
 
  public StringRedisTemplate getTemple() {
    return temple;
  }
}

ps:類和子類中同時聲明了getTemple方法和 StringRedisTemple屬性,子類通過重寫父類的getTeimple方法,把子類的自己StringRedisTemple 屬性 傳給 父類,父類通過子類傳遞過來的StringRedisTemple使用不通的數(shù)據(jù)鏈接來操作緩存。至此,父類完成所有的操作方法,而當需要創(chuàng)建一個數(shù)據(jù)庫連接時,只需要在創(chuàng)建一個子類,被聲明自己的StringRedisTemple,并傳給父類即可。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://blog.csdn.net/wangqingqi20005/article/details/52613387

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美日韩国产在线播放 | 精品国产一二三区 | 99精品一区 | 免费观看一区二区三区毛片软件 | 欧美三区二区一区 | 欧美成人免费网站 | 无码日韩精品一区二区免费 | 最新国产在线视频 | 国产精品久久久久久久久小说 | 成人在线免费观看视频 | 日韩一区二区不卡 | 999国产在线观看 | 精品一区免费 | 午夜视频免费 | 亚洲毛片 | www国产亚洲精品久久网站 | 毛片综合 | 日韩精品小视频 | 欧美成人专区 | 在线观看成人 | 欧美一级二级视频 | 亚洲成人看片 | 亚洲精品视频免费 | 国产精品99在线观看 | 国产欧美日韩一区二区三区 | 亚洲精品无 | 精品一区二区久久久久黄大片 | 中国毛片基地 | 国产精品久久久久久久久久久免费看 | 亚洲精品视频免费观看 | 成人免费av | 国产精品欧美一区二区三区 | 亚洲一区中文字幕在线观看 | 免费观看一级特黄欧美大片 | 欧美成人精品一区二区 | 日韩成人片 | 国产精品综合一区二区 | 久久九九免费 | 亚洲精品一区二区网址 | 黄色av一级片 | 午夜剧场免费在线观看 |