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

springBoot (springCloud2025)集成redisCluster 集群

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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.5.6</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.emall</groupId><artifactId>account-service</artifactId><version>0.0.1-SNAPSHOT</version><name>account-service</name><description>account service</description><url/><licenses><license/></licenses><developers><developer/></developers><scm><connection/><developerConnection/><tag/><url/></scm><properties><java.version>17</java.version><spring-cloud.version>2025.0.0</spring-cloud.version> <!-- 添加 Spring Cloud 版本 --></properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web-services</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!---   redis 以及数据绑定 开始--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId></dependency><!-- Redis客户端:Lettuce(默认,支持集群) --><dependency><groupId>io.lettuce</groupId><artifactId>lettuce-core</artifactId></dependency><!-- Spring Boot Configuration Processor --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency><!---   redis 以及数据绑定 结束--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-context</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><scope>provided</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

application.yaml

spring:application:name: account-serviceredis:password: wa123456cluster:password:${spring.redis.password}nodes:- 192.168.88.104:6379- 192.168.88.104:6380- 192.168.88.105:6379- 192.168.88.105:6380- 192.168.88.106:6379- 192.168.88.106:6380max-redirects: 3lettuce:pool:max-active: 20max-idle: 10min-idle: 5max-wait: 2000mscluster:refresh:adaptive: trueperiod: 200timeout: 5000msconnect-timeout: 3000mseureka:instance:hostname: localhostinstance-id: ${spring.application.name}:${spring.application.instance_id:${random.value}}client:service-url:defaultZone: http://${eureka.instance.hostname}:8761/eurekaserver:port: 8760logging:level:com.emall.account_service: DEBUG

cluster配置类

package com.emall.account_service.config;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;import java.util.ArrayList;
import java.util.List;@ConfigurationProperties(prefix = "spring.redis.cluster")
@Data
public class RedisClusterProperties {private List<String> nodes = new ArrayList<>();private Integer maxRedirects = 3;private String password;
}

其他配置类

package com.emall.account_service.config;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;import java.time.Duration;@ConfigurationProperties(prefix = "spring.redis")
@Data
public class RedisCommonProperties {private Duration timeout = Duration.ofMillis(2000);private String password;private Integer database = 0;private Lettuce lettuce = new Lettuce();@Datapublic static class Lettuce {private Pool pool = new Pool();private Cluster cluster = new Cluster();@Datapublic static class Pool {private int maxActive = 8;private int maxIdle = 8;private int minIdle = 0;private Duration maxWait = Duration.ofMillis(-1);}@Datapublic static class Cluster {private Refresh refresh = new Refresh();@Datapublic static class Refresh {private Boolean adaptive = true;private Duration period = Duration.ofMillis(2000);}}}
}

连接池配置类

package com.emall.account_service.config;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;import java.time.Duration;@ConfigurationProperties(prefix = "spring.redis.lettuce.pool")
@Data
public class LettucePoolProperties {private int maxActive = 8;private int maxIdle = 8;private int minIdle = 0;private Duration maxWait = Duration.ofMillis(-1);private Duration timeBetweenEvictionRuns = Duration.ofMillis(30000);
}

redis 工具类

package com.emall.account_service.utils;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;import java.util.concurrent.TimeUnit;@Component
public class RedisUtil {@Autowiredprivate RedisTemplate<String, Object> redisTemplate;/*** 设置缓存*/public void set(String key, Object value) {redisTemplate.opsForValue().set(key, value);}/*** 设置缓存并设置过期时间*/public void set(String key, Object value, long timeout, TimeUnit unit) {redisTemplate.opsForValue().set(key, value, timeout, unit);}/*** 获取缓存*/public Object get(String key) {return redisTemplate.opsForValue().get(key);}/*** 删除缓存*/public Boolean delete(String key) {return redisTemplate.delete(key);}/*** 设置过期时间*/public Boolean expire(String key, long timeout, TimeUnit unit) {return redisTemplate.expire(key, timeout, unit);}/*** 判断key是否存在*/public Boolean hasKey(String key) {return redisTemplate.hasKey(key);}/*** 哈希操作 - 设置字段值*/public void hSet(String key, String field, Object value) {redisTemplate.opsForHash().put(key, field, value);}/*** 哈希操作 - 获取字段值*/public Object hGet(String key, String field) {return redisTemplate.opsForHash().get(key, field);}/*** 列表操作 - 左推*/public Long lPush(String key, Object value) {return redisTemplate.opsForList().leftPush(key, value);}/*** 列表操作 - 右弹出*/public Object rPop(String key) {return redisTemplate.opsForList().rightPop(key);}
}

测试接口

package com.emall.account_service.controller;import com.emall.account_service.utils.RedisUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class AccountFeignController {@Autowiredprivate RedisUtil redisUtil;@GetMapping("/account/address")public String getAddress(){return "account-service:8760";}@GetMapping("/account/add")public String addRedis(){String key = "user:account:";String value= "刘e非";redisUtil.set(key,value);System.out.println("保存数据成果");System.out.println("获取数据成果"+redisUtil.get(key));return "success";}}
http://www.dtcms.com/a/600727.html

相关文章:

  • Redis在Windows上测试运行Memurai
  • windows ubuntu双系统下卸载ubuntu
  • 零基础入门C语言之C语言实现数据结构之双向链表
  • 初次接触 LoRA 技术
  • 西安哪家网站公司做的比较好做网页制作的价格
  • 【OpenCV + VS 】图像通道分离与合并
  • 【超分辨率专题】HYPIR:扩散模型先验与 GAN 对抗训练相结合的新型图像复原框架
  • 【ZeroRange WebRTC】kvsWebrtcClientMaster 获取 ICE 服务器配置解析
  • 手机网站建设liednswordpress改模板教程视频
  • Chrome V3 插件开发:监听并转发 API 请求
  • OpenCV 图像处理与键盘交互
  • 长沙理工《人工智能基础A》实验(上机)报告实验三 电商数据可视化/图像处理
  • Elasticsearch 的结构化文档配置 - 递归分块实践
  • 如何在IIS中配置HTTP重定向
  • elasticsearch 安装 repository-oss 插件
  • 宝安做网站哪家好德阳网站建设熊掌号
  • 输入10个整数存放于数组中,并将最小的数与数组的第一个元素交换,最大的数与数组的最后一个元素交换
  • 从 WAL 到 Fluss->Flink CDC Postgres Connector 端到端同步实战
  • 数据结构 图 的邻接表建立
  • C++CUDA实战:通过两个图像算法,搞懂了GPU编程
  • RabbitMQ应用(2)
  • Spring Boot 中的消息队列集成:从 RabbitMQ 到 Kafka 的深度实践
  • Spring Boot 与 RabbitMQ 集成示例
  • 家纺 网站模版想自己做网站流程
  • 将 CentOS 风格的命令行提示符(如 [root@slave1 ~]#)修改为 Ubuntu 风格
  • k8s各种场景下排错思路以及命令 k8s常见问题故障处理思路
  • win32k源代码分析之win32k!IsSAS函数中的全局变量win32k!gfsSASModifiers = 3是什么时候被赋值的
  • 序列和可迭代
  • 16.udp_socket(二)
  • 如何在不使用iTunes的情况下在电脑上访问iPhone文件