springBoot整合redisCluster(redis集群)模式。

本文详细介绍如何在Windows环境下部署Redis集群,并将其整合到SpringBoot项目中,通过具体步骤及代码示例,帮助读者理解整个过程,提升电商秒杀系统的并发处理能力。

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

最近准备弄一个springBoot电商秒杀的demo项目,在搭建后台框架时,非关系型数据库准备整合redis,之前用的是单机版,考虑到是电商项目,后面用jmeter做压力测试效果可能不好,于是想试试redisCluster集群模式,看看并发qps变化效果,在网上看了很多博客吸取到了很多干货,但是很多都不全只是写了代码这块怎么整合的例子,并没有指出redis部署集群的教程,所以摸索成功之后觉得有必要分享出来整套的东西,让整合的人少踩坑,废话不多说下面开始。



 1.在windows上进行redis集群部署。

    参考这位兄弟的帖子:https://blog.youkuaiyun.com/zsg88/article/details/73715947点击打开链接

    帖子里面Ruby 环境安装的地址已经失效,我是在这里下载安装的

      点击打开链接

    另外如果项目里配置的redis地址用电脑ip的话,需要去redis安装目录下的redis.windows.conf配置文件里更改一下默认绑    定的ip,改掉默认bind 127.0.0.1为bind 0.0.0.0,这样的话redis就可以供别的机器访问了。


    部署完成最终效果图




2.springBoot架构整合

 ①springBoot架构创建(这里不做过多描述,推荐使用idea一键创建)。


 ②pom文件增加依赖。

    

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

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


③.配置application.yml或application.properties配置文件

spring:
    redis:
       cache.clusterNodes: 127.0.0.1:6379,127.0.0.1:6380,127.0.0.1:6381,127.0.0.1:6382,127.0.0.1:6383,127.0.0.1:6384
       cache.commandTimeout: 5000


④.创建RedisProperties装载配置到对象

    

package com.springboot.buying.snapup.utils.redis;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * @Author: nanjunyu
 * @Description:读取redis配置信息并装载
 * @Date: Create in  2018/6/14 16:16
 */
@Component
@ConfigurationProperties(prefix = "spring.redis.cache")
public class RedisProperties {
    private int expireSeconds;
    private String clusterNodes;
    private int commandTimeout;

    public int getExpireSeconds() {
        return expireSeconds;
    }

    public void setExpireSeconds(int expireSeconds) {
        this.expireSeconds = expireSeconds;
    }

    public String getClusterNodes() {
        return clusterNodes;
    }

    public void setClusterNodes(String clusterNodes) {
        this.clusterNodes = clusterNodes;
    }

    public int getCommandTimeout() {
        return commandTimeout;
    }

    public void setCommandTimeout(int commandTimeout) {
        this.commandTimeout = commandTimeout;
    }
}

⑤.创建JedisClusterConfig读取读取配置信息


package com.springboot.buying.snapup.utils.redis;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;

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

/**
 * @Author: nanjunyu
 * @Description:
 * @Date: Create in  2018/6/14 16:28
 */
@Configuration
public class JedisClusterConfig {
    @Autowired
    private RedisProperties redisProperties;

    public JedisCluster getJedisCluster(){
        String [] serverArray=redisProperties.getClusterNodes().split(",");
        Set<HostAndPort> nodes=new HashSet<>();

        for (String ipPort:serverArray){
            String [] ipPortPair=ipPort.split(":");
            nodes.add(new HostAndPort(ipPortPair[0].trim(),Integer.valueOf(ipPortPair[1].trim())));

        }
        return  new JedisCluster(nodes,redisProperties.getCommandTimeout());
    }

}

⑥.创建RedisClientTemplate接口进行set  get测试  这里简单写了两个方法,自行修改

    

package com.springboot.buying.snapup.utils.redis;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * @Author: nanjunyu
 * @Description:
 * @Date: Create in  2018/6/14 16:34
 */
@Service
public class RedisClientTemplate {
    private static final Logger log=LoggerFactory.getLogger(RedisClientTemplate.class);

    @Autowired
    private JedisClusterConfig jedisClusterConfig;

    public boolean setToRedis(String key,Object value){
        try {
        String str=jedisClusterConfig.getJedisCluster().set(key, String.valueOf(value));
        if("OK".equals(str))
            return true;
        }catch (Exception ex){
            log.error("setToRedis:{Key:"+key+",value"+value+"}",ex);
        }
        return false;
    }

    public Object getRedis(String key){
        String str=null;
        try {
             str=jedisClusterConfig.getJedisCluster().get(key);
        }catch (Exception ex){
            log.error("getRedis:{Key:"+key+"}",ex);
        }
        return str;
    }
    
}

ok到这里我们redis集群搭建好了,代码配置也都弄好了,现在我们创建一个controller见证奇迹吧!

package com.springboot.buying.snapup.controller;

import com.springboot.buying.snapup.utils.redis.RedisClientTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Author: nanjunyu
 * @Description:
 * @Date: Create in  2018/6/14 17:31
 */
@RestController
@RequestMapping(value = "/test")
public class TestController {

    @Autowired
    RedisClientTemplate redisClientTemplate;

    @GetMapping(value = "/testSet")
    public Object testSet(){
        redisClientTemplate.setToRedis("Frank","Frank测试redis");
        System.out.println(redisClientTemplate.getRedis("Frank"));
        return null;
    }

}


下面就是见证奇迹的时刻。。



到这里我们的springBoot整合redisCluster集群模式就完成了  ,谢谢大家观看,有问题留言。

SpringBoot中,可以使用Redis实现分片集群。分片集群是将数据分散存储在多个Redis节点上,以提高性能和可扩展性。 有两种常见的分片集群方式可以用于SpringBoot整合Redis实现分片集群。 第一种方式是使用Redis Sentinel哨兵集群。在SpringBoot的配置文件中,可以指定哨兵集群的IP地址和端口号。通过使用哨兵集群,可以实现Redis的高可用性和故障转移。 第二种方式是使用Redis Cluster集群。同样在配置文件中,可以指定Redis Cluster集群的IP地址和端口号。Redis Cluster使用一致性Hash分片算法来将数据分布在多个节点上,从而实现数据的分片存储。 通过以上两种方式的配置,SpringBoot可以实现Redis的分片集群,从而提高系统的性能和可靠性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [基于SpringBoot实现单点登录的两种方式](https://download.youkuaiyun.com/download/m0_37776094/10640593)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [springboot整合redis集群](https://blog.youkuaiyun.com/weixin_45390688/article/details/125467210)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值