Heim > Java > javaLernprogramm > Hauptteil

Eingehende Analyse, wie Springboot mehrere Redis-Verbindungen konfiguriert

Y2J
Freigeben: 2017-05-04 10:18:30
Original
3894 Leute haben es durchsucht

Spring Boot bietet automatische Konfiguration für Redis, MongoDB, Elasticsearch, Solr und Gemfire. In diesem Artikel wird die Konfiguration mehrerer Redis-Verbindungen in Springboot ausführlich vorgestellt. Interessierte können mehr erfahren.

1. Springboot nosql Einführung

Spring Data bietet weitere Projekte, die Ihnen bei der Verwendung verschiedener NoSQL-Technologien helfen, einschließlich MongoDB, Neo4J, Elasticsearch, Solr, Redis, Gemfire, Couchbase und Cassandra. Spring Boot bietet automatische Konfiguration für Redis, MongoDB, Elasticsearch, Solr und Gemfire. Sie können die Vorteile anderer Projekte voll ausnutzen, müssen diese jedoch selbst konfigurieren.

1.1, Redis

Redis ist ein Cache, eine Nachrichten-Middleware und ein Schlüsselwertspeichersystem mit umfangreichen Funktionen. Spring Boot bietet eine automatische Konfiguration für die Jedis-Clientbibliothek und die von Spring Data Redis bereitgestellten clientbasierten Jedis-Abstraktionen. spring-boot-starter-redis „Starter POM“ bietet eine praktische Möglichkeit, Abhängigkeiten zu sammeln.
Redis fügt Maven-Abhängigkeit hinzu

   <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>
Nach dem Login kopieren

1.2 Redis verbinden

Sie können eine automatisch konfigurierte RedisConnectionFactory, StringRedisTemplate oder dasselbe wie andere Spring Beans RedisTemplate-Instanzen injizieren. Standardmäßig versucht diese Instanz, über localhost:6379 eine Verbindung zum Redis-Server herzustellen.

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

Wenn Sie ein eigenes @Bean eines beliebigen Autokonfigurationstyps hinzufügen, ersetzt es das Standard-Bean (außer im Fall von RedisTemplate, das auf dem Namen der Bean „redisTemplate“ basiert ' statt dessen Typ ausgeschlossen). Wenn commons-pool2 im Klassenpfad vorhanden ist, erhalten Sie standardmäßig eine Verbindungspool-Factory.

1.3 Stellen Sie mehrere Redis-Verbindungen her

Mit der Standardkonfiguration von Redis können Sie eine Verbindung zur 0-Bibliothek in Redis herstellen. Sie müssen indexdb konfigurieren. Wenn Sie eine Verbindung zu mehreren Redis-Diensten herstellen müssen, müssen Sie gleichzeitig mehrere Datenquellen konfigurieren.

Fügen Sie der Anwendung Folgendes hinzu. yml-Datei:

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

1.3.2. Neukonfiguration erstellen

@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; 
  } 
}
Nach dem Login kopieren

1.3.3. Deklarieren Sie die abstrakte Redis-Basisklasse und erstellen Sie Redis-Operationsmethoden

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; 
  } 
}
Nach dem Login kopieren

1.3.4. Erstellen Sie verschiedene Unterklassen @Component

entsprechend der Datenquelle
public class Redis123 extends AbRedisConfiguration { 
 
  @Resource(name = "redis123Template") 
  private StringRedisTemplate temple; 
 
  public StringRedisTemplate getTemple() { 
    return temple; 
  } 
}
Nach dem Login kopieren

ps: Die getTemple-Methode und das StringRedisTempleAttribut werden beide in der Klasse und der Unterklasse deklariert Das eigene StringRedisTemple-Attribut der Unterklasse wird durch Überschreiben der getTeimple-Methode der übergeordneten Klasse verwendet. Der von der übergeordneten Klasse über die Unterklasse übergebene StringRedisTemple verwendet unterschiedliche Datenverknüpfungen, um den Cache zu betreiben. Zu diesem Zeitpunkt hat die übergeordnete Klasse alle Betriebsmethoden abgeschlossen. Wenn Sie eine Datenbankverbindung erstellen müssen, müssen Sie nur eine Unterklasse erstellen, einen eigenen StringRedisTemple deklarieren und ihn an die übergeordnete Klasse übergeben.

Das obige ist der detaillierte Inhalt vonEingehende Analyse, wie Springboot mehrere Redis-Verbindungen konfiguriert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage