SpringBoot下redis集群的操作和连接

本文详细介绍使用Jedis客户端连接Redis集群的方法,包括配置依赖、参数设置及代码实现。通过具体示例展示集群环境下Redis的操作流程,适用于需要高可用性和扩展性的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

集群版本的优势便不再提,此处阐述下如何使用Jedis连接redis集群。

 

一、相关依赖:

		<dependency>
			<groupId>redis.clients</groupId>
			<artifactId>jedis</artifactId>
			<version>2.9.0</version>
		</dependency>

 

二、相关配置

yml中添加以下配置:

redis:
  cluster:
    timeOut: 7200
    soTimeOut: 7200
    maxAttempts: 6
    password: redispwd123
    maxIdle: 2000
    maxWaitMillis: 5000
    nodes:
      - 127.0.0.1:6391
      - 127.0.0.1:6392
      - 127.0.0.1:6393
      - 127.0.0.1:6394
      - 127.0.0.1:6395
      - 127.0.0.1:6396

ip地址按照集群地址配置。

 

三、JedisCluster配置

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPoolConfig;

import java.util.HashSet;
import java.util.Set;


@Component
@ConfigurationProperties(prefix = "redis.cluster")
public class RedisProperties {

    private String[] nodes;

    private String password;

    private int timeOut;

    private int maxAttempts;

    private int soTimeOut;

    private int maxIdle;

    private long maxWaitMillis;

    public String[] getNodes() {
        return nodes;
    }

    public void setNodes(String[] nodes) {
        this.nodes = nodes;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getTimeOut() {
        return timeOut;
    }

    public void setTimeOut(int timeOut) {
        this.timeOut = timeOut;
    }

    public int getMaxAttempts() {
        return maxAttempts;
    }

    public void setMaxAttempts(int maxAttempts) {
        this.maxAttempts = maxAttempts;
    }

    public int getSoTimeOut() {
        return soTimeOut;
    }

    public void setSoTimeOut(int soTimeOut) {
        this.soTimeOut = soTimeOut;
    }

    public int getMaxIdle() {
        return maxIdle;
    }

    public void setMaxIdle(int maxIdle) {
        this.maxIdle = maxIdle;
    }

    public long getMaxWaitMillis() {
        return maxWaitMillis;
    }

    public void setMaxWaitMillis(long maxWaitMillis) {
        this.maxWaitMillis = maxWaitMillis;
    }

    @Bean
    public JedisCluster redisClusterFactory(){
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        jedisPoolConfig.setMaxIdle(maxIdle);
        jedisPoolConfig.setMaxWaitMillis(maxWaitMillis);
        Set<HostAndPort> hostAndPorts = new HashSet<>(1<<4);
        for (String str:nodes){
            hostAndPorts.add(new HostAndPort(str.split(":")[0], Integer.valueOf(str.split(":")[1])));
        }
        return new JedisCluster(hostAndPorts, timeOut, soTimeOut, maxAttempts, password, jedisPoolConfig);
    }


}

四、操作redis

public class RedisDataSourceImpl implements RedisDataSource {
    private static final Logger logger = LoggerFactory.getLogger(RedisDataSourceImpl.class);


    @Autowired
    private JedisCluster jedisCluster;



    @Override
    public void putInfo(String key, String value){
        try{
            jedisCluster.hset(key, value);
            logger.info("已存入redis中:" + key);
        }catch (Exception e){
            logger.error("推redis异常:", e);
        }
    }
}

操作区别不大,这里只是举个例子,集群版相较于单机版增容和容错都好上不少。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值