Maison > Java > javaDidacticiel > le corps du texte

Analyse approfondie de la façon dont Springboot configure plusieurs connexions Redis

Y2J
Libérer: 2017-05-04 10:18:30
original
3882 Les gens l'ont consulté

Spring Boot fournit une configuration automatique pour Redis, MongoDB, Elasticsearch, Solr et Gemfire. Cet article présente en détail la configuration de plusieurs connexions Redis dans Springboot. Ceux qui sont intéressés peuvent en savoir plus.

1. Springboot nosql Introduction

Spring Data fournit d'autres projets pour vous aider à utiliser diverses technologies NoSQL, notamment MongoDB, Neo4J, Elasticsearch, Solr, Redis, Gemfire, Couchbase et Cassandra. Spring Boot fournit une configuration automatique pour Redis, MongoDB, Elasticsearch, Solr et Gemfire. Vous pouvez profiter pleinement d’autres projets, mais vous devez les configurer vous-même.

1.1, Redis

Redis est un cache, un middleware de messages et un système de stockage clé-valeur doté de fonctionnalités riches. Spring Boot fournit une configuration automatique pour la bibliothèque client Jedis et les abstractions basées sur le client Jedis fournies par Spring Data Redis. spring-boot-starter-redis 'Starter POM' fournit un moyen pratique de collecter les dépendances.
Redis ajoute une dépendance 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>
Copier après la connexion

1.2 Connect Redis

Vous pouvez injecter une RedisConnectionFactory, StringRedisTemplate ou la même chose que les autres instances Spring Beans RedisTemplate configurées automatiquement. Par défaut, cette instance tentera de se connecter au serveur Redis à l'aide de localhost:6379.

@Component 
public class MyBean { 
private StringRedisTemplate template; 
@Autowired 
public MyBean(StringRedisTemplate template) { 
this.template = template; 
} 
// ... 
}
Copier après la connexion

Si vous ajoutez votre propre @Bean de n'importe quel type configuré automatiquement, il remplacera celui par défaut (sauf dans le cas de RedisTemplate, qui est basé sur le nom du bean 'redisTemplate ' plutôt que son type exclu). Si commons-pool2 existe dans le chemin de classe, vous obtiendrez une fabrique de pool de connexions par défaut.

1.3 Établir plusieurs connexions Redis

En utilisant la configuration par défaut de Redis, vous pouvez vous connecter à la bibliothèque 0 dans Redis. Si vous spécifiez une connexion à la bibliothèque, vous devez configurer indexdb en même temps, si vous devez connecter plusieurs services Redis, vous devez également configurer plusieurs sources de données en même temps

1.3.1 Ajoutez ce qui suit au fichier application.yml. fichier :

@Component 
public class MyBean { 
private StringRedisTemplate template; 
@Autowired 
public MyBean(StringRedisTemplate template) { 
this.template = template; 
} 
// ... 
}
Copier après la connexion

1.3.2. Créer une configuration redis

@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; 
  } 
}
Copier après la connexion

1.3.3 Déclarez la classe de base abstraite redis et créez des méthodes d'opération 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; 
  } 
}
Copier après la connexion

. 1.3.4. Créer différentes sous-classes @Component

selon la source de données
public class Redis123 extends AbRedisConfiguration { 
 
  @Resource(name = "redis123Template") 
  private StringRedisTemplate temple; 
 
  public StringRedisTemplate getTemple() { 
    return temple; 
  } 
}
Copier après la connexion

ps : La méthode getTemple et l'attribut StringRedisTemple sont tous deux déclarés dans la classe et la sous-classe. propre attribut StringRedisTemple de la sous-classe à la classe parent en remplaçant la méthode getTeimple de la classe parent, le StringRedisTemple transmis de la classe parent via la sous-classe utilise différentes liaisons de données pour faire fonctionner le cache. À ce stade, la classe parent a terminé toutes les méthodes d'opération et lorsque vous devez créer une connexion à la base de données, il vous suffit de créer une sous-classe, de déclarer son propre StringRedisTemple et de la transmettre à la classe parent.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!