“Spring Boot 连 Redis 主从模式”的版本间的差异

来自姬鸿昌的知识库
跳到导航 跳到搜索
第1行: 第1行:
 
https://docs.spring.io/spring-data/redis/docs/2.5.12/reference/html/#redis:write-to-master-read-from-replica
 
https://docs.spring.io/spring-data/redis/docs/2.5.12/reference/html/#redis:write-to-master-read-from-replica
 +
 +
=== pom.xml ===
 +
<syntaxhighlight lang="xml">
 +
<?xml version="1.0" encoding="UTF-8"?>
 +
<project xmlns="http://maven.apache.org/POM/4.0.0"
 +
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 +
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 +
    <modelVersion>4.0.0</modelVersion>
 +
 +
    <groupId>io.github.jihch</groupId>
 +
    <artifactId>spring-boot-redis-master-slave</artifactId>
 +
    <version>1.0-SNAPSHOT</version>
 +
 +
    <parent>
 +
        <groupId>org.springframework.boot</groupId>
 +
        <artifactId>spring-boot-starter-parent</artifactId>
 +
        <version>2.4.13</version>
 +
    </parent>
 +
 +
    <properties>
 +
        <maven.compiler.source>8</maven.compiler.source>
 +
        <maven.compiler.target>8</maven.compiler.target>
 +
    </properties>
 +
 +
 +
    <dependencies>
 +
        <dependency>
 +
            <groupId>org.springframework.boot</groupId>
 +
            <artifactId>spring-boot-starter-test</artifactId>
 +
            <scope>test</scope>
 +
        </dependency>
 +
 +
        <dependency>
 +
            <groupId>org.projectlombok</groupId>
 +
            <artifactId>lombok</artifactId>
 +
        </dependency>
 +
 +
 +
        <dependency>
 +
            <groupId>org.springframework.boot</groupId>
 +
            <artifactId>spring-boot-starter-data-redis</artifactId>
 +
        </dependency>
 +
 +
 +
        <dependency>
 +
            <groupId>org.springframework.boot</groupId>
 +
            <artifactId>spring-boot-starter-web</artifactId>
 +
            <version>2.4.0</version>
 +
        </dependency>
 +
 +
        <dependency>
 +
            <groupId>org.springframework.boot</groupId>
 +
            <artifactId>spring-boot-configuration-processor</artifactId>
 +
            <optional>true</optional>
 +
        </dependency>
 +
 +
    </dependencies>
 +
</project>
 +
</syntaxhighlight>
 +
 +
 +
 +
 +
=== application.yml ===
 +
<syntaxhighlight lang="yaml">
 +
spring:
 +
  redis:
 +
    host: 127.0.0.1
 +
    port: 6379
 +
    password: vn4sj5kbxdaG
 +
</syntaxhighlight>
 +
 +
 +
 +
 +
=== WriteToMasterReadFromReplicaConfiguration.java ===
 +
<syntaxhighlight lang="java">
 +
package io.github.jihch.config;
 +
 +
import io.lettuce.core.ReadFrom;
 +
import org.springframework.beans.factory.annotation.Autowired;
 +
import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
 +
import org.springframework.context.annotation.Bean;
 +
import org.springframework.context.annotation.Configuration;
 +
import org.springframework.data.redis.connection.RedisConnectionFactory;
 +
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
 +
import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration;
 +
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
 +
 +
@Configuration
 +
public class WriteToMasterReadFromReplicaConfiguration {
 +
 +
    @Autowired
 +
    private RedisProperties redisProperties;
 +
 +
    @Bean
 +
    public RedisConnectionFactory redisConnectionFactory() {
 +
 +
        LettuceClientConfiguration clientConfig = LettuceClientConfiguration.builder()
 +
                .readFrom(ReadFrom.REPLICA_PREFERRED)
 +
                .build();
 +
 +
        RedisStandaloneConfiguration serverConfig = new RedisStandaloneConfiguration(redisProperties.getHost(), redisProperties.getPort());
 +
        serverConfig.setPassword(redisProperties.getPassword());
 +
 +
        return new LettuceConnectionFactory(serverConfig, clientConfig);
 +
    }
 +
}
 +
 +
</syntaxhighlight>

2023年2月18日 (六) 17:20的版本

https://docs.spring.io/spring-data/redis/docs/2.5.12/reference/html/#redis:write-to-master-read-from-replica

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>io.github.jihch</groupId>
    <artifactId>spring-boot-redis-master-slave</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.13</version>
    </parent>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>


    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.4.0</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

    </dependencies>
</project>



application.yml

spring:
  redis:
    host: 127.0.0.1
    port: 6379
    password: vn4sj5kbxdaG



WriteToMasterReadFromReplicaConfiguration.java

package io.github.jihch.config;

import io.lettuce.core.ReadFrom;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;

@Configuration
public class WriteToMasterReadFromReplicaConfiguration {

    @Autowired
    private RedisProperties redisProperties;

    @Bean
    public RedisConnectionFactory redisConnectionFactory() {

        LettuceClientConfiguration clientConfig = LettuceClientConfiguration.builder()
                .readFrom(ReadFrom.REPLICA_PREFERRED)
                .build();

        RedisStandaloneConfiguration serverConfig = new RedisStandaloneConfiguration(redisProperties.getHost(), redisProperties.getPort());
        serverConfig.setPassword(redisProperties.getPassword());

        return new LettuceConnectionFactory(serverConfig, clientConfig);
    }
}