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>
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; } // ... }
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; } // ... }
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; } }
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; } }
1.3.4. Erstellen Sie verschiedene Unterklassen @Component
entsprechend der Datenquellepublic class Redis123 extends AbRedisConfiguration { @Resource(name = "redis123Template") private StringRedisTemplate temple; public StringRedisTemplate getTemple() { return temple; } }
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!