当前位置: 代码网 > it编程>编程语言>Java > springBoot (springCloud2025)集成redisCluster 集群的操作方法

springBoot (springCloud2025)集成redisCluster 集群的操作方法

2025年11月13日 Java 我要评论
在spring boot项目中集成redis cluster,你可以使用spring data redis库,它提供了对redis操作的抽象和封装。pom.xml<?xml version="1

在spring boot项目中集成redis cluster,你可以使用spring data redis库,它提供了对redis操作的抽象和封装。

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-service
  redis:
    password: wa123456
    cluster:
      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:6380
      max-redirects: 3
    lettuce:
      pool:
        max-active: 20
        max-idle: 10
        min-idle: 5
        max-wait: 2000ms
      cluster:
        refresh:
          adaptive: true
          period: 200
    timeout: 5000ms
    connect-timeout: 3000ms
eureka:
  instance:
    hostname: localhost
    instance-id: ${spring.application.name}:${spring.application.instance_id:${random.value}}
  client:
    service-url:
      defaultzone: http://${eureka.instance.hostname}:8761/eureka
server:
  port: 8760
logging:
  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();
    @data
    public static class lettuce {
        private pool pool = new pool();
        private cluster cluster = new cluster();
        @data
        public static class pool {
            private int maxactive = 8;
            private int maxidle = 8;
            private int minidle = 0;
            private duration maxwait = duration.ofmillis(-1);
        }
        @data
        public static class cluster {
            private refresh refresh = new refresh();
            @data
            public 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 {
    @autowired
    private 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 {
    @autowired
    private 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";
   }
}

到此这篇关于springboot (springcloud2025)集成rediscluster 集群的文章就介绍到这了,更多相关springboot 集成rediscluster 集群内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com