当前位置: 首页 > article >正文

【Springboot知识】Redis基础-springboot集成redis相关配置

文章目录

      • 1. 添加依赖
      • 2. 配置Redis连接
      • 3. 配置RedisTemplate(可选)
      • 4. 使用RedisTemplate或StringRedisTemplate
      • 5. 测试和验证
    • 集群配置
      • 在`application.properties`中配置
      • 在`application.yml`中配置
    • 主从配置
      • 1. 配置Redis服务器
        • 使用配置文件
        • 使用命令行
      • 2. 配置Spring Boot客户端
        • 在`application.properties`中配置
        • 在`application.yml`中配置
      • 3. 使用RedisTemplate或StringRedisTemplate
      • 4. 注意事项

在Spring Boot中接入Redis通常涉及以下几个步骤:

1. 添加依赖

首先,你需要在你的pom.xml(对于Maven项目)或build.gradle(对于Gradle项目)中添加Spring Data Redis的依赖。

对于Maven:

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

对于Gradle:

implementation 'org.springframework.boot:spring-boot-starter-data-redis'

2. 配置Redis连接

application.propertiesapplication.yml文件中配置Redis的连接信息。这包括Redis服务器的地址、端口、密码(如果有的话)以及数据库索引等。

例如,在application.properties中:

spring.redis.host=localhost
spring.redis.port=6379
# spring.redis.password=yourpassword  # 如果Redis服务器设置了密码,则取消注释并填写
spring.redis.database=0

或者在application.yml中:

spring:
  redis:
    host: localhost
    port: 6379
    # password: yourpassword  # 如果Redis服务器设置了密码,则取消注释并填写
    database: 0

3. 配置RedisTemplate(可选)

虽然Spring Boot会自动配置一个RedisTemplate,但你可能需要自定义它的序列化器,以便正确地存储和检索你的数据。

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

@Configuration
public class RedisConfig {

    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(redisConnectionFactory);

        // 使用StringRedisSerializer来序列化和反序列化redis的key值
        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
        template.setKeySerializer(stringRedisSerializer);
        template.setHashKeySerializer(stringRedisSerializer);

        // 使用GenericJackson2JsonRedisSerializer来序列化和反序列化redis的value值
        GenericJackson2JsonRedisSerializer jackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
        template.setValueSerializer(jackson2JsonRedisSerializer);
        template.setHashValueSerializer(jackson2JsonRedisSerializer);

        template.afterPropertiesSet();
        return template;
    }
}

4. 使用RedisTemplate或StringRedisTemplate

现在你可以在你的Spring Bean中使用RedisTemplateStringRedisTemplate来与Redis进行交互了。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

@Service
public class MyRedisService {

    @Autowired
    private RedisTemplate<String, Object> redisTemplate;

    public void saveValue(String key, Object value) {
        redisTemplate.opsForValue().set(key, value);
    }

    public Object getValue(String key) {
        return redisTemplate.opsForValue().get(key);
    }

    // 其他与Redis交互的方法...
}

5. 测试和验证

最后,编写一些单元测试或集成测试来验证你的Redis配置是否正确,以及你的服务是否能够正确地与Redis进行交互。

确保Redis服务器正在运行,并且你的Spring Boot应用程序能够连接到它。然后,你可以通过调用你的服务方法来测试Redis的读写操作。

以上就是Spring Boot接入Redis的基本步骤。根据你的具体需求,你可能还需要进行更多的配置和定制。

集群配置

application.properties中配置

# Redis集群节点地址,多个节点用逗号分隔
spring.redis.cluster.nodes=192.168.1.100:7000,192.168.1.100:7001,192.168.1.100:7002
# Redis密码(如果设置了密码)
spring.redis.password=yourpassword
# 在集群上执行命令时重定向的最大数量
spring.redis.cluster.max-redirects=3
# 连接池配置
spring.redis.lettuce.pool.max-idle=10
spring.redis.lettuce.pool.min-idle=5
spring.redis.lettuce.pool.max-active=20
spring.redis.lettuce.pool.max-wait=-1  # 或者设置一个具体的毫秒数

application.yml中配置

spring:
  redis:
    cluster:
      nodes: 192.168.1.100:7000,192.168.1.100:7001,192.168.1.100:7002
      password: yourpassword  # 如果设置了密码
      max-redirects: 3
    lettuce:
      pool:
        max-idle: 10
        min-idle: 5
        max-active: 20
        max-wait: -1  # 或者设置一个具体的毫秒数

主从配置

在Spring Boot中配置Redis主从(Master-Slave)模式通常涉及设置Redis服务器的配置以及Spring Boot客户端的连接配置。以下是一个简要的指南,帮助你完成这一任务:

1. 配置Redis服务器

首先,你需要在Redis服务器上配置主从关系。这通常是在Redis配置文件(通常是redis.conf)中或通过命令行参数来完成的。

使用配置文件

在主节点(Master)的redis.conf中,你通常不需要做任何特殊的配置,除非你有特定的需求。

在从节点(Slave)的redis.conf中,你需要添加以下配置来指定主节点的地址和端口:

replicaof <master-ip> <master-port>

注意:在Redis 5.0及更高版本中,slaveof命令已被重命名为replicaof

使用命令行

你也可以通过Redis命令行来配置主从关系。连接到从节点并执行以下命令:

replicaof <master-ip> <master-port>

2. 配置Spring Boot客户端

在Spring Boot中,你需要配置Redis客户端以连接到主节点(因为从节点通常用于只读操作,并且会自动从主节点同步数据)。

application.properties中配置
# Redis主节点地址和端口
spring.redis.host=<master-ip>
spring.redis.port=<master-port>

# Redis密码(如果设置了密码)
spring.redis.password=yourpassword

# 连接池配置(可选)
spring.redis.jedis.pool.max-active=10
spring.redis.jedis.pool.max-idle=5
spring.redis.jedis.pool.min-idle=2
spring.redis.jedis.pool.max-wait=-1ms

注意:这里使用的是Jedis连接池的配置,因为Lettuce是Spring Boot 2.x的默认Redis客户端,但你可以通过指定spring.redis.client-type=jedis来切换到Jedis。如果你使用Lettuce,配置将略有不同。

application.yml中配置
spring:
  redis:
    host: <master-ip>
    port: <master-port>
    password: yourpassword  # 如果设置了密码
    jedis:
      pool:
        max-active: 10
        max-idle: 5
        min-idle: 2
        max-wait: -1ms

3. 使用RedisTemplate或StringRedisTemplate

在你的Spring Bean中,你可以通过@Autowired注入RedisTemplateStringRedisTemplate来与Redis进行交互。由于你配置的是主节点,所以所有的写操作都会发送到主节点,而读操作(取决于你的配置和客户端的实现)可能会发送到主节点或从节点。

4. 注意事项

  • 读写分离:在Redis主从配置中,从节点通常用于只读操作。然而,Spring Boot客户端默认不会将读操作路由到从节点,除非你使用了特定的库或配置来支持这一点。例如,你可以使用Spring Data Redis的Lettuce客户端,并通过配置来启用读写分离。
  • 故障转移:在主节点故障时,从节点不会自动升级为主节点。这通常需要额外的工具或配置,如Redis Sentinel或Redis Cluster。
  • 连接管理:确保你的连接池配置与你的应用需求和Redis服务器的性能相匹配。
  • 安全性:如果Redis服务器配置了密码,请确保在Spring Boot配置中正确设置了密码。

通过遵循这些步骤,你应该能够成功地将Spring Boot应用配置为连接到Redis主从集群,并利用Redis的高可用性特性。然而,请注意,如果你需要自动的故障转移和更高级的高可用性特性,你可能需要考虑使用Redis Sentinel或Redis Cluster。


http://www.kler.cn/a/445045.html

相关文章:

  • 数据结构:B树与B+树
  • ip地址和网络号关系是什么
  • 揭秘区块链隐私黑科技:零知识证明如何改变未来
  • 【C 语言指针篇】指针的灵动舞步与内存的神秘疆域:于 C 编程世界中领略指针艺术的奇幻华章
  • GIT安装过程
  • PostgreSQL数据库访问限制详解
  • 海量数据库使用操作
  • 管理图像标注工具labelimg的默认标签以提高标注效率
  • uniapp对接unipush 1.0 ios/android
  • C++Primer 注释简介
  • Django 提供的会话(Session)相关的设置说明
  • jenkins针对大文件进行拉取
  • flask before_request 请求拦截器返回无值则放行,有值则拦截
  • 【VUE】14、VUE项目如何自动识别服务端是否发布了新版本
  • Redis 突然变慢了如何排查并解决?
  • Spring Boot实现OAuth2.0登录实战
  • Flutter组件————BottomNavigationBar
  • vue2 - Day03 - (生命周期、组件、组件通信)
  • scala图书馆系统
  • ChatGPT生成接口测试用例(二)
  • mybatisPlus使用步骤详解
  • 安卓环境配置及打开新项目教程,2024年12月20日最新版
  • uniapp Native.js 调用安卓arr原生service
  • 《军工记忆》第二季播出,科技创新铸国之重器
  • mybatis逆向工程插件MyBatisX使用介绍
  • 裸金属服务器和传统服务器的区别