0


Springboot-Redisson - 1.简介和配置


👀 简介

Redisson是一个基于Java的Redis客户端库,它提供了许多有用的功能和工具,使得在使用Redis时更加方便和强大。Redisson可以与Spring Boot集成,以简化在Spring应用程序中使用Redis的过程。

以下是关于Redisson的一些主要特点和功能:

  1. 分布式对象模型:Redisson允许您将Java对象保存在Redis中,这些对象可以通过Redis的分布式特性进行管理和共享。这意味着您可以使用Redis作为分布式缓存和数据存储,而不必手动处理序列化和反序列化。
  2. 分布式锁:Redisson提供了分布式锁的支持,可以用于在多个应用程序实例之间同步对共享资源的访问。这对于实现分布式任务调度和资源管理非常有用。
  3. 分布式集合:Redisson支持分布式集合数据结构,如List、Set、Map等,这些数据结构可以在多个节点之间共享和操作。
  4. 分布式队列和主题:Redisson提供了分布式队列和主题(Pub/Sub)的实现,用于实现事件驱动的架构和消息传递。
  5. Redis连接池管理:Redisson自动管理Redis连接池,确保连接的高效使用和释放,同时提供了连接监控和负载均衡功能。
  6. Spring Boot集成:Redisson提供了与Spring Boot的集成,您可以通过简单的配置将Redisson集成到Spring Boot应用程序中。这样,您可以轻松地使用Redisson的功能来处理Redis操作。

👀 配置方法

在 Redisson 中,有许多配置项可以根据应用的需求进行调整。下面是一个详细的配置示例,用于在 Spring Boot 中配置 Redisson:

首先,确保你已在

pom.xml

中添加了 Redisson 的依赖:

<!-- Redisson Spring Boot Starter 依赖 --><dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.15.0</version><!-- 根据实际情况选择版本 --></dependency>

接下来,在

application.properties

application.yml

中指定 Redisson 配置文件的位置:

# 指定 Redisson 配置文件的位置
redisson.config=classpath:redisson.yaml

现在,我们将创建一个

redisson.yaml

文件来进行详细的配置。将此文件放在

resources

文件夹下。

# 单一 Redis 服务器模式singleServerConfig:# Redis 服务器的地址address:"redis://127.0.0.1:6379"# 连接池的大小connectionPoolSize:64# Redis 服务器的密码password:"your_password"# Redis 数据库索引database:0# 客户端名称clientName:"your_client_name"# 超时时间,单位为毫秒timeout:3000# Redis 命令失败重试次数retryAttempts:3# 两次命令之间重试的时间间隔,单位为毫秒retryInterval:1500# 发布和订阅的连接的最小数量subscriptionConnectionMinimumIdleSize:1# 发布和订阅的连接池的大小subscriptionConnectionPoolSize:50# 当前处理 Redis 命令的线程共享的联接connectionMinimumIdleSize:10# 集群模式的配置 (需要注释或删除 singleServerConfig 当使用此模式)#clusterServersConfig:#  scanInterval: 2000#  slaveConnectionPoolSize: 64#  slaveConnectionMinimumIdleSize: 24#  masterConnectionPoolSize: 64#  masterConnectionMinimumIdleSize: 24#  readMode: "SLAVE"#  nodeAddresses:#    - "redis://127.0.0.1:7001"#    - "redis://127.0.0.1:7002"#    - "redis://127.0.0.1:7003"#  password: "your_password"# 其他模式,如 sentinel, masterSlave, replicated 可以在这里配置,但确保只有一个模式处于未注释状态# 线程工厂配置threads:16nettyThreads:32# 编解码器配置,默认是 Jacksoncodec:!<org.redisson.codec.JsonJacksonCodec>{}# 传输模式,默认是 NIOtransportMode:"NIO"

上述配置涵盖了 Redisson 的许多常见配置项。当然,Redisson 还提供了许多其他的高级配置,如 SSL 配置、云服务配置等。根据你的实际需求,可以进一步定制此配置文件。

这就是在 Spring Boot 中进行 Redisson 详细配置的方法。这个配置文件使用了单一服务器模式,但 Redisson 还支持许多其他的服务器配置模式,如集群、哨兵、主从等。这些模式的配置项也可以在上面的示例中找到,但默认是被注释掉的。

结合Spring Boot, Redisson为Java提供了Redis的客户端,支持大量的分布式Java对象和服务。以下是Redisson的几种主要配置方法:


✌1. 程序化配置方法

✍作用:

通过Java代码来配置Redisson客户端,提供了一种动态的方式来调整和设置Redisson的参数。

✍使用场景:

当应用程序需要基于不同的条件(如环境、用户输入或其他动态因素)来配置Redisson时。

✍优缺点:

  • 优点:非常灵活,可以根据实时的应用需求或条件来调整。
  • 缺点:可能导致配置逻辑分散在代码的多个位置,增加了代码的复杂性。

🎷示例

在Spring Boot中,您可以使用Java代码来配置Redisson客户端。这种方法非常适合动态配置,或者根据不同的条件来设置配置。

🎯 示例:

💡 首先,确保您已在

pom.xml

中添加了Redisson和Spring Boot的依赖:

<dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>最新版本</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>

💡 接下来,在Spring Boot的主配置类或一个配置类中,您可以这样配置Redisson:

importorg.redisson.Redisson;importorg.redisson.api.RedissonClient;importorg.redisson.config.Config;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;@ConfigurationpublicclassRedissonConfig{@Bean(destroyMethod="shutdown")publicRedissonClientredisson(){Config config =newConfig();
        config.useSingleServer().setAddress("redis://127.0.0.1:6379").setPassword("yourPassword");// 如果设置了密码returnRedisson.create(config);}}

💡 在上面的代码中,我们配置了一个单一的Redis服务器实例。您可以根据您的需求调整配置,例如使用哨兵模式、集群模式等。

💡 现在,您可以在任何Spring组件或服务中注入

RedissonClient

,然后使用它来与Redis交互。

importorg.redisson.api.RedissonClient;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;@ServicepublicclassSomeService{@AutowiredprivateRedissonClient redissonClient;publicvoidsomeMethod(){// 使用redissonClient进行操作...}}

✌2. 文件方式配置

✍作用:

允许开发者使用外部的配置文件(如YAML或JSON)来设置Redisson客户端。

✍使用场景:

适用于大部分应用,特别是当配置信息相对静态,或需要在不同的环境中共享相同的配置时。

✍优缺点:

  • 优点:配置清晰,集中,容易进行版本控制。
  • 缺点:需要重新启动应用来应用配置的更改。

🎷示例

  1. 添加 Maven 依赖:
<dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.16.1</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>
  1. application.yml 文件中配置 Redisson:
redisson:config: classpath:redisson-config.yml
  1. 创建一个 redisson-config.yml 文件,该文件包含 Redisson 的配置:
singleServerConfig:idleConnectionTimeout:10000pingTimeout:1000connectTimeout:10000timeout:3000retryAttempts:3retryInterval:1500password:nullsubscriptionsPerConnection:5clientName:nulladdress:"redis://127.0.0.1:6379"subscriptionConnectionMinimumIdleSize:1subscriptionConnectionPoolSize:50connectionMinimumIdleSize:10connectionPoolSize:64database:0dnsMonitoringInterval:5000threads:16nettyThreads:32codec:!<org.redisson.codec.JsonJacksonCodec>{}
  1. 在 Spring Boot 应用程序中使用 Redisson:
@RestControllerpublicclassRedisController{@AutowiredprivateRedissonClient redissonClient;@GetMapping("/set")publicStringsetKey(@RequestParamString key,@RequestParamString value){RMap<String,String> map = redissonClient.getMap("myMap");
        map.put(key, value);return"Value set!";}@GetMapping("/get")publicStringgetKey(@RequestParamString key){RMap<String,String> map = redissonClient.getMap("myMap");return map.get(key);}}

✌3. 常用设置

不同的Redisson编码方式的名称、作用和使用场景:
编码方式作用和特点使用场景JsonJacksonCodecJackson JSON编码,默认编码方式一般的JSON数据序列化和反序列化AvroJacksonCodec二进制的JSON编码,高性能需要高性能的二进制JSON数据编码SmileJacksonCodec另一种二进制的JSON编码,紧凑紧凑的二进制JSON数据编码CborJacksonCodecCBOR二进制JSON编码高效的CBOR格式数据编码MsgPackJacksonCodecMsgPack二进制JSON编码高效的MsgPack格式数据编码IonJacksonCodecAmazon Ion编码,类似JSON与Amazon Ion格式交互的情况KryoCodec二进制对象序列化编码,高性能需要高性能的Java对象序列化SerializationCodecJDK序列化编码,性能较差原生Java对象序列化FstCodecFST二进制对象序列化编码,高性能高性能Java对象序列化LZ4Codec压缩型序列化对象编码,高效高效压缩的数据存储和检索SnappyCodec压缩型序列化对象编码,高效高效压缩的数据存储和检索JsonJacksonMapCodec基于Jackson的映射类使用的编码映射类数据的序列化和反序列化StringCodec纯字符串编码,无转换存储和检索简单字符串数据LongCodec纯整长型数字编码,无转换存储和检索长整数数据ByteArrayCodec字节数组编码存储和检索原始字节数据CompositeCodec组合多种不同编码方式根据需求选择不同的编码方式

✍作用:

涉及Redisson客户端的常规设置,如连接池大小、连接超时、线程设置等。

✍使用场景:

根据应用的规模和需求来调整和优化Redisson客户端的性能。

✍优缺点:

  • 优点:提供了对Redisson行为的细致控制,可以优化性能。
  • 缺点:需要对Redis和Redisson有一定了解,以确保正确的配置。

🎷示例

Redisson 是一个功能强大的 Java 客户端库,用于与 Redis 交互。它提供了丰富的设置选项,用于配置 Redisson 的行为和性能。下面是一些 Redisson 的常用设置示例,以及如何在 Spring Boot 中配置和使用它们。

1. 配置 Redisson 连接

首先,在 Spring Boot 的

application.properties

application.yml

文件中配置 Redisson 连接:

# Redisson 连接配置redisson:single-server:address:"redis://localhost:6379"# Redis 服务器地址password: your_password # 如果需要密码认证的话# 或者配置 Redis 集群连接# cluster-servers:#   - "redis://node1_host:6379"#   - "redis://node2_host:6379"#   ...
  • single-server:使用单个 Redis 服务器配置。
  • cluster-servers:使用 Redis 集群配置。

2. 配置 Redisson 客户端

创建一个配置类,用于配置 Redisson 客户端并创建 RedissonClient 实例:

importorg.redisson.Redisson;importorg.redisson.api.RedissonClient;importorg.redisson.config.Config;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;@ConfigurationpublicclassRedissonConfig{@Value("${redisson.single-server.address}")privateString redisAddress;@Value("${redisson.single-server.password}")privateString redisPassword;@BeanpublicRedissonClientredissonClient(){Config config =newConfig();
        config.useSingleServer().setAddress(redisAddress).setPassword(redisPassword);returnRedisson.create(config);}}

3. 常用设置示例

下面是一些 Redisson 常用设置的示例:

3.1. 配置超时时间

importorg.redisson.config.Config;// ...Config config =newConfig();
config.useSingleServer().setAddress(redisAddress).setPassword(redisPassword).setTimeout(3000);// 设置连接超时时间为 3000 毫秒

3.2. 配置连接池大小

importorg.redisson.config.Config;// ...Config config =newConfig();
config.useSingleServer().setAddress(redisAddress).setPassword(redisPassword).setConnectionPoolSize(100);// 设置连接池大小为 100

3.3. 配置编码器

importorg.redisson.config.Config;importorg.redisson.codec.JsonJacksonCodec;// ...Config config =newConfig();
config.useSingleServer().setAddress(redisAddress).setPassword(redisPassword).setCodec(JsonJacksonCodec.INSTANCE);// 设置自定义编码器

4. 使用 Redisson 设置

在你的服务类中注入

RedissonClient

并使用它来执行 Redisson 操作。以下是示例服务类:

importorg.redisson.api.RedissonClient;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;@ServicepublicclassRedissonService{privatefinalRedissonClient redissonClient;@AutowiredpublicRedissonService(RedissonClient redissonClient){this.redissonClient = redissonClient;}/**
     * 示例方法:向 Redis 写入数据
     *
     * @param key   Redis 键
     * @param value Redis 值
     */publicvoidwriteToRedis(String key,String value){// 使用 RedissonClient 执行写入操作
        redissonClient.getBucket(key).set(value);}/**
     * 示例方法:从 Redis 读取数据
     *
     * @param key Redis 键
     * @return Redis 值
     */publicStringreadFromRedis(String key){// 使用 RedissonClient 执行读取操作return redissonClient.getBucket(key).get();}}

5. 常见的 Redisson 设置参数
在 Spring Boot 中使用 Redisson 配置常见的 Redisson 设置参数可以通过在 Spring Boot 项目的配置文件(如

application.properties

application.yml

)中设置相应的属性来实现。下面是如何在 Spring Boot 中结合 Redisson 配置常用的设置参数的示例,以及详细的注释:

# Redisson 配置redisson:codec: org.redisson.codec.MsgPackJacksonCodec # 设置编码方式为 MsgPackJacksonCodecthreads:16# 设置线程池数量为 16nettyThreads:32# 设置 Netty 线程池数量为 32lockWatchdogTimeout:60000# 设置锁的看门狗超时时间为 60 秒keepPubSubOrder:true# 保持订阅发布顺序performanceMode: HIGHER_THROUGHPUT # 设置高性能模式为高通量# 或者使用 Java 配置类# 使用 @ConfigurationProperties(prefix = "redisson") 注解绑定配置属性# application.properties# redisson.codec=org.redisson.codec.MsgPackJacksonCodec# redisson.threads=16# redisson.nettyThreads=32# redisson.lockWatchdogTimeout=60000# redisson.keepPubSubOrder=true# redisson.performanceMode=HIGHER_THROUGHPUT

接下来,你可以创建一个 Redisson 配置类来读取这些属性并配置 Redisson 客户端。以下是示例 Redisson 配置类:

importorg.redisson.Redisson;importorg.redisson.api.RedissonClient;importorg.redisson.config.Config;importorg.springframework.boot.context.properties.ConfigurationProperties;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;@Configuration@ConfigurationProperties(prefix ="redisson")publicclassRedissonConfig{privateString codec;privateint threads;privateint nettyThreads;privatelong lockWatchdogTimeout;privateboolean keepPubSubOrder;privateString performanceMode;// 省略 getter 和 setter 方法@BeanpublicRedissonClientredissonClient(){Config config =newConfig();// 设置编码方式
        config.setCodec(codec);// 设置线程池数量
        config.setThreads(threads);// 设置 Netty 线程池数量
        config.setNettyThreads(nettyThreads);// 设置锁的看门狗超时时间
        config.setLockWatchdogTimeout(lockWatchdogTimeout);// 保持订阅发布顺序
        config.setKeepPubSubOrder(keepPubSubOrder);// 设置高性能模式
        config.setPerformanceMode(performanceMode);returnRedisson.create(config);}}

在上述示例中,我们通过

@ConfigurationProperties

注解将配置文件中的属性与配置类的属性绑定在一起,并在

RedissonConfig

类的

redissonClient

方法中使用这些属性来配置 Redisson 客户端。


✌4. 集群模式

✍作用:

允许Redisson客户端连接到Redis集群,提供数据分片和高可用性。

✍使用场景:

用于大型应用或有高可用性需求的应用。

✍优缺点:

  • 优点:提供高可用性、数据冗余。
  • 缺点:配置和维护相对复杂。

🎷示例

在 Spring Boot 中使用 Redisson 来配置和使用 Redis 集群模式需要执行一系列步骤。下面是一个详细的示例,每个步骤都有详细的注释。

步骤 1: 添加 Redisson 依赖

首先,在项目的 Maven

pom.xml

文件中添加 Redisson 的依赖:

<dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.16.2</version><!-- 请使用最新版本 --></dependency>

步骤 2: 配置 Redisson 集群

在 Spring Boot 应用程序的配置文件(

application.properties

application.yml

)中配置 Redisson 的集群信息:

# Redisson 集群配置redisson:cluster-servers:-"redis://node1_host:6379"-"redis://node2_host:6379"-"redis://node3_host:6379"password: your_password # 如果需要密码认证的话

请将上述配置中的

node1_host

node2_host

node3_host

替换为你的 Redis 集群中的实际节点主机和端口,并设置密码(如果需要)。

步骤 3: 创建 Redisson 配置类

创建一个配置类,用于配置 Redisson 并创建 RedissonClient 实例。这里使用 Java 代码示例:

importorg.redisson.Redisson;importorg.redisson.api.RedissonClient;importorg.redisson.config.Config;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;@ConfigurationpublicclassRedissonConfig{@Value("${redisson.cluster-servers}")privateString[] clusterServers;@Value("${redisson.password}")privateString password;@BeanpublicRedissonClientredissonClient(){// 创建 Redisson 配置对象Config config =newConfig();
        config.useClusterServers().setScanInterval(2000)// 集群节点扫描间隔时间.addNodeAddress(clusterServers).setPassword(password);// 使用配置对象创建 RedissonClient 实例returnRedisson.create(config);}}

上述配置类读取了在配置文件中定义的 Redisson 集群配置信息,并使用这些信息创建了 RedissonClient 实例。

步骤 4: 创建服务类

创建一个服务类,用于演示如何在 Spring Boot 中使用 Redisson 进行集群操作。以下是示例服务类:

importorg.redisson.api.RLock;importorg.redisson.api.RedissonClient;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;@ServicepublicclassRedisClusterService{privatefinalRedissonClient redissonClient;@AutowiredpublicRedisClusterService(RedissonClient redissonClient){this.redissonClient = redissonClient;}/**
     * 示例方法:获取分布式锁并执行操作
     */publicvoidexecuteWithLock(){// 获取名为 "myLock" 的分布式锁RLock lock = redissonClient.getLock("myLock");
        lock.lock();// 获取锁try{// 在锁的保护下执行需要加锁的操作// ...}finally{
            lock.unlock();// 释放锁}}/**
     * 示例方法:向 Redis 集群写入数据
     *
     * @param key   Redis 键
     * @param value Redis 值
     */publicvoidwriteToCluster(String key,String value){// 使用 RedissonClient 执行写入操作
        redissonClient.getBucket(key).set(value);}/**
     * 示例方法:从 Redis 集群读取数据
     *
     * @param key Redis 键
     * @return Redis 值
     */publicStringreadFromCluster(String key){// 使用 RedissonClient 执行读取操作return redissonClient.getBucket(key).get();}}

上述示例服务类包含了三个方法,分别演示了获取分布式锁、向 Redis 集群写入数据以及从 Redis 集群读取数据的操作。

步骤 5: 使用 Redisson 集群

在你的 Spring Boot 应用程序中,你可以注入

RedisClusterService

并使用它来执行 Redisson 集群操作。

importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;@RestController@RequestMapping("/redis-cluster")publicclassRedisClusterController{privatefinalRedisClusterService redisClusterService;@AutowiredpublicRedisClusterController(RedisClusterService redisClusterService){this.redisClusterService = redisClusterService;}@GetMapping("/lock")publicStringexecuteWithLock(){// 执行带锁的操作
        redisClusterService.executeWithLock();return"Operation executed with lock.";}@GetMapping("/write")publicStringwriteToCluster(){// 向 Redis 集群写入数据
        redisClusterService.writeToCluster("myKey","myValue");return"Data written to Redis cluster.";}@GetMapping("/read")publicStringreadFromCluster(){// 从 Redis 集群读取数据String value = redisClusterService.readFromCluster("myKey");return"Value from Redis cluster: "+ value;}}

以上是一个完整的示例,演示了如何在 Spring Boot 中配置和使用 Redisson 的集群模式。确保按照示例中的步骤配置项目,并根据需要调整配置和操作。


✌5. 云托管模式

✍作用:

为在云服务(如Amazon AWS, Azure等)上托管的Redis服务提供专门的配置。

✍使用场景:

在云平台上运行的应用,使用云服务提供的Redis实例。

✍优缺点:

  • 优点:简化了在云平台上部署和扩展Redis的过程。
  • 缺点:可能需要对特定的云平台有所了解。

🎷示例

Redisson 的云托管模式允许你将 Redisson 客户端连接到云中托管的 Redis 服务,如云提供商(例如,AWS Elasticache、Azure Cache for Redis 或 Google Cloud Memorystore)中的 Redis。在这种情况下,你通常不需要配置底层的 Redis 连接信息,因为这些信息已经由云提供商进行管理。

以下是一个示例,展示如何在 Spring Boot 中配置 Redisson 的云托管模式,并连接到云中的 Redis 服务。请注意,云托管模式的具体配置可能因云提供商而异,这里提供了一个通用示例。

首先,确保你的项目中包含了 Redisson 的依赖。你可以在

pom.xml

中添加以下依赖:

<dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.16.0</version><!-- 请根据你的需求选择合适的版本 --></dependency>

接下来,创建一个 Spring Boot 配置类,用于配置 Redisson 的云托管模式。以下是示例配置类,包括详细的注释:

importorg.redisson.Redisson;importorg.redisson.config.Config;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;@ConfigurationpublicclassRedissonConfig{@Value("${spring.redis.host}")// 获取 Redis 云托管的主机地址privateString redisHost;@Value("${spring.redis.port}")// 获取 Redis 云托管的端口privateint redisPort;@Value("${spring.redis.password}")// 获取 Redis 密码(如果有)privateString redisPassword;@BeanpublicRedissonClientredissonClient(){Config config =newConfig();// 使用云托管模式
        config.useSingleServer().setAddress("redis://"+ redisHost +":"+ redisPort).setPassword(redisPassword);// 创建 Redisson 客户端returnRedisson.create(config);}}

在上述示例中,我们使用 Spring 的

@Value

注解从 Spring Boot 的配置文件(如

application.properties

application.yml

)中获取 Redis 云托管的主机地址、端口和密码。然后,我们使用这些信息配置 Redisson 的单机模式,创建一个 Redisson 客户端。

确保在你的 Spring Boot 项目中设置了正确的 Redis 云托管配置信息,以便连接到云中托管的 Redis 服务。

这只是一个通用示例,实际的云托管配置可能因云提供商而异。请根据你使用的云提供商的文档和要求来进行配置。


✌6. 单Redis节点模式

✍作用:

连接到单个的Redis服务器实例。

✍使用场景:

小型应用或开发和测试环境。

✍优缺点:

  • 优点:配置简单,部署快速。
  • 缺点:没有数据冗余或高可用性。

🎷示例

Redisson 的单 Redis 节点模式是一种常见的使用场景,它允许你连接到单个独立的 Redis 服务器。以下是一个详细的示例,展示如何在 Spring Boot 中配置 Redisson 的单 Redis 节点模式,以及如何使用它。每个方法和配置都有详细的注释。

首先,确保你的项目中包含了 Redisson 的依赖。你可以在

pom.xml

中添加以下依赖:

<dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.16.0</version><!-- 请根据你的需求选择合适的版本 --></dependency>

接下来,创建一个 Spring Boot 配置类,用于配置 Redisson 的单 Redis 节点模式。以下是示例配置类,包括详细的注释:

importorg.redisson.Redisson;importorg.redisson.api.RedissonClient;importorg.redisson.config.Config;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;@ConfigurationpublicclassRedissonConfig{@Value("${spring.redis.host}")// 获取 Redis 主机地址privateString redisHost;@Value("${spring.redis.port}")// 获取 Redis 端口privateint redisPort;@Value("${spring.redis.password}")// 获取 Redis 密码(如果有)privateString redisPassword;@BeanpublicRedissonClientredissonClient(){Config config =newConfig();// 配置单节点模式
        config.useSingleServer().setAddress("redis://"+ redisHost +":"+ redisPort)// 设置 Redis 地址.setPassword(redisPassword);// 设置 Redis 密码// 创建 Redisson 客户端returnRedisson.create(config);}}

在上述示例中,我们使用 Spring 的

@Value

注解从 Spring Boot 的配置文件(如

application.properties

application.yml

)中获取 Redis 主机地址、端口和密码。然后,我们使用这些信息配置 Redisson 的单节点模式,创建一个 Redisson 客户端。

确保在你的 Spring Boot 项目中设置了正确的 Redis 单节点配置信息,以便连接到指定的 Redis 服务器。

现在,你可以在 Spring Boot 应用程序中注入

RedissonClient

bean,并使用它来与 Redis 进行交互。以下是一个示例:

importorg.redisson.api.RedissonClient;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RestController;@RestControllerpublicclassMyController{@AutowiredprivateRedissonClient redissonClient;@GetMapping("/set")publicStringsetValue(){// 使用 Redisson 客户端设置键值对
        redissonClient.getBucket("myKey").set("myValue");return"Key-Value set successfully!";}@GetMapping("/get")publicStringgetValue(){// 使用 Redisson 客户端获取键的值String value = redissonClient.getBucket("myKey").get();return"Value for 'myKey': "+ value;}}

在上述示例中,我们通过注入

RedissonClient

bean 来获取 Redisson 客户端,并使用它来设置和获取 Redis 中的键值对。

这就是如何配置和使用 Redisson 的单 Redis 节点模式的详细示例。确保在你的应用程序中使用正确的配置信息和 Redisson 客户端来与 Redis 进行交互。


✌7. 哨兵模式

✍作用:

使用Redis哨兵提供高可用性和故障转移。

✍使用场景:

需要高可用性但不想使用集群的应用。

✍优缺点:

  • 优点:自动故障转移,提供系统的韧性。
  • 缺点:需要额外的哨兵节点配置和维护。

🎷示例

Redisson 的哨兵模式允许你连接到 Redis Sentinel(哨兵)集群,这是一种高可用性配置,其中多个 Redis 服务器实例通过 Sentinel 进程监控并自动切换主服务器以确保可用性。以下是一个详细的示例,展示如何在 Spring Boot 中配置 Redisson 的哨兵模式,以及如何使用它。每个方法和配置都有详细的注释。

首先,确保你的项目中包含了 Redisson 的依赖。你可以在

pom.xml

中添加以下依赖:

<dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.16.0</version><!-- 请根据你的需求选择合适的版本 --></dependency>

接下来,创建一个 Spring Boot 配置类,用于配置 Redisson 的哨兵模式。以下是示例配置类,包括详细的注释:

importorg.redisson.Redisson;importorg.redisson.api.RedissonClient;importorg.redisson.config.Config;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;@ConfigurationpublicclassRedissonConfig{@Value("${spring.redis.sentinel.master}")// 获取 Sentinel 主服务器名称privateString masterName;@Value("${spring.redis.sentinel.nodes}")// 获取 Sentinel 节点地址列表privateString sentinelNodes;@Value("${spring.redis.password}")// 获取 Redis 密码(如果有)privateString redisPassword;@BeanpublicRedissonClientredissonClient(){Config config =newConfig();// 配置哨兵模式
        config.useSentinelServers().setMasterName(masterName)// 设置 Sentinel 主服务器名称.addSentinelAddress(sentinelNodes.split(","))// 设置 Sentinel 节点地址列表.setPassword(redisPassword);// 设置 Redis 密码// 创建 Redisson 客户端returnRedisson.create(config);}}

在上述示例中,我们使用 Spring 的

@Value

注解从 Spring Boot 的配置文件(如

application.properties

application.yml

)中获取 Sentinel 主服务器名称、Sentinel 节点地址列表和 Redis 密码(如果有)。然后,我们使用这些信息配置 Redisson 的哨兵模式,创建一个 Redisson 客户端。

确保在你的 Spring Boot 项目中设置了正确的哨兵配置信息,以便连接到 Redis Sentinel 集群。

现在,你可以在 Spring Boot 应用程序中注入

RedissonClient

bean,并使用它来与 Redis 进行交互。以下是一个示例:

importorg.redisson.api.RedissonClient;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RestController;@RestControllerpublicclassMyController{@AutowiredprivateRedissonClient redissonClient;@GetMapping("/set")publicStringsetValue(){// 使用 Redisson 客户端设置键值对
        redissonClient.getBucket("myKey").set("myValue");return"Key-Value set successfully!";}@GetMapping("/get")publicStringgetValue(){// 使用 Redisson 客户端获取键的值String value = redissonClient.getBucket("myKey").get();return"Value for 'myKey': "+ value;}}

在上述示例中,我们通过注入

RedissonClient

bean 来获取 Redisson 客户端,并使用它来设置和获取 Redis 中的键值对。

这就是如何配置和使用 Redisson 的哨兵模式的详细示例。确保在你的应用程序中使用正确的配置信息和 Redisson 客户端来与 Redis Sentinel 集群进行交互。


✌8. 主从模式

✍作用:

设置Redis的主从复制来实现数据冗余。

✍使用场景:

需要数据冗余但不要求高可用性的应用。

✍优缺点:

  • 优点:数据冗余,提高数据的安全性。
  • 缺点:没有自动的故障转移。

🎷示例

Redisson 的主从模式允许你连接到 Redis 主服务器和一个或多个 Redis 从服务器。这种配置允许在主服务器上进行写操作,并在从服务器上进行读操作,从而分担主服务器的负载。以下是一个详细的示例,展示如何在 Spring Boot 中配置 Redisson 的主从模式,以及如何使用它。每个方法和配置都有详细的注释。

首先,确保你的项目中包含了 Redisson 的依赖。你可以在

pom.xml

中添加以下依赖:

<dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.16.0</version><!-- 请根据你的需求选择合适的版本 --></dependency>

接下来,创建一个 Spring Boot 配置类,用于配置 Redisson 的主从模式。以下是示例配置类,包括详细的注释:

importorg.redisson.Redisson;importorg.redisson.api.RedissonClient;importorg.redisson.config.Config;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;@ConfigurationpublicclassRedissonConfig{@Value("${spring.redis.master}")// 获取 Redis 主服务器地址privateString masterAddress;@Value("${spring.redis.slave}")// 获取 Redis 从服务器地址privateString slaveAddress;@Value("${spring.redis.password}")// 获取 Redis 密码(如果有)privateString redisPassword;@BeanpublicRedissonClientredissonClient(){Config config =newConfig();// 配置主从模式
        config.useMasterSlaveServers().setMasterAddress(masterAddress)// 设置主服务器地址.addSlaveAddress(slaveAddress)// 添加从服务器地址.setPassword(redisPassword);// 设置 Redis 密码// 创建 Redisson 客户端returnRedisson.create(config);}}

在上述示例中,我们使用 Spring 的

@Value

注解从 Spring Boot 的配置文件(如

application.properties

application.yml

)中获取 Redis 主服务器地址、从服务器地址和 Redis 密码(如果有)。然后,我们使用这些信息配置 Redisson 的主从模式,创建一个 Redisson 客户端。

确保在你的 Spring Boot 项目中设置了正确的主从配置信息,以便连接到 Redis 主服务器和从服务器。

现在,你可以在 Spring Boot 应用程序中注入

RedissonClient

bean,并使用它来与 Redis 进行交互。以下是一个示例:

importorg.redisson.api.RedissonClient;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RestController;@RestControllerpublicclassMyController{@AutowiredprivateRedissonClient redissonClient;@GetMapping("/set")publicStringsetValue(){// 使用 Redisson 客户端设置键值对(写操作在主服务器上执行)
        redissonClient.getBucket("myKey").set("myValue");return"Key-Value set successfully on master!";}@GetMapping("/get")publicStringgetValue(){// 使用 Redisson 客户端获取键的值(读操作在从服务器上执行)String value = redissonClient.getBucket("myKey").get();return"Value for 'myKey' (from slave): "+ value;}}

在上述示例中,我们通过注入

RedissonClient

bean 来获取 Redisson 客户端,并使用它来设置和获取 Redis 中的键值对。请注意,写操作在主服务器上执行,而读操作在从服务器上执行,以减轻主服务器的负载。

这就是如何配置和使用 Redisson 的主从模式的详细示例。确保在你的应用程序中使用正确的配置信息和 Redisson 客户端来与 Redis 主从集群进行交互。


标签: spring boot 后端 java

本文转载自: https://blog.csdn.net/yueerba126/article/details/134073777
版权归原作者 yueerba126 所有, 如有侵权,请联系我们删除。

“Springboot-Redisson - 1.简介和配置”的评论:

还没有评论