springboot集成redis集群(单节点转集群需要排除冲突依赖)

8 篇文章 1 订阅

目录

如果需要配置文件详解请看我的文章

redis集群脚本

springboot单redis切换到redis集群无故出错解决


如果需要配置文件详解请看我的文章

redis&&哨兵集群部署 docker单机模拟-六节点_年关的博客-CSDN博客

redis集群脚本

这个集群是三主三从的集群,不需要哨兵,因为集群模式自带了分片和故障转移,脚本不重要,重要的是脚本生成的配置文件,使用这个配置文件生成redis就可以,在最后手动建立集群就可以了

难点讲解 

        1、除了服务端口外,集群之间进行通信也需要一个总线端口,用来检测服务状态和故障转移,一般是服务端口+10000的端口,注意防火墙放行

        2、集群模式和哨兵模式的区别,集群自己集成了状态检测和故障转移,就不用哨兵了,集群数据是分片存储的,这个还是百度吧,懒得打字了。

        3、集群只有超过一半的节点在线才能继续切换主从,三个节点允许掉线一个节点,五个才允许掉线两个节点,并且只有主节点参与投票。从节点不参与,所以要允许两个同时掉线并切换至少需要五个主节点,以及各自一个从节点。

        4、建立集群的语句,主节点是按照顺序来排列的,如果都是主机的话,从节点也是一一对应的,但如果从节点和某个主节点在同一台机子上,redis在建立集群的时候就不会把他们建立主从关系,而是将这个从节点作为其他节点的从节点。

#批量部署

for port in $(seq 8001 8010); \
do \
mkdir -p /root/data/redis${port}/data
mkdir -p /root/data/redis${port}/conf
touch /root/data/redis${port}/conf/redis.conf
cat << EOF >/root/data/redis${port}/conf/redis.conf
#这里面是配置文件
#如果想要指定IP访问权限请打开保护模式并指定bind
#只允许ip访问
#bind 0.0.0.0
#关闭保护模式
protected-mode no
#服务端口
port ${port}
#日志
logfile "/data/redis${port}.log"
#pid
pidfile "/data/redis${port}.pid"
#关闭集群模式才能手动加入主从
cluster-enabled yes
#节点配置文件
cluster-config-file nodes${port}.conf
#宕机主备切换时间
cluster-node-timeout 5000
#本机ip
cluster-announce-ip 192.168.5.242
#集群映射端口
cluster-announce-port ${port}
#集群通信端口
cluster-announce-bus-port 1${port}
# 开启AOF
appendonly yes
#配置本机密码
requirepass 123456
#从节点配置主节点ip端口密码
#slaveof 192.168.5.242 8001
#配置主节点数据
#replicaof 192.168.5.242 8001
#配置同步验证密码主从或者集群用
masterauth 123456
EOF
chmod 777 -f /root/data/redis${port}/* 
docker run -p ${port}:${port} -p 1${port}:1${port} --name redis-${port} \
-v /root/data/redis${port}/data:/data \
-v /root/data/redis${port}/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf; \
done
echo "请手动进入节点“docker exec -it redis-8001 bash”,执行建成集群命令“redis-cli -a 123456 --cluster create 192.168.5.242:8001 192.168.5.242:8002 192.168.5.242:8003 192.168.5.242:8004 192.168.5.242:8005 192.168.5.242:8006 --cluster-replicas 1 \n
yes”"

springboot单redis切换到redis集群无故出错解决

配置文件更改

单节点

spring.redis.host=192.168.1.1
spring.redis.port=6379

多节点的话改成

spring.redis.cluster.nodes=192.168.1.1:6739,192.168.1.1:6739,192.168.1.1:6739,192.168.1.1:6739,192.168.1.1:6739,192.168.1.1:6739,192.168.1.1:6739,192.168.1.1:6739

把单节点的注释掉加上这个多节点的就可以了,其他配置超时,故障转移重定向什么的也要改,不过不写也行,记得密码别写错了

大概率是依赖问题

引入依赖,版本选择适合自己的。

 <dependency>
      <groupId>redis.clients</groupId>
      <artifactId>jedis</artifactId>
      <version>版本</version>
    </dependency>

重点,如果配置正确任然无法连接到io.xxxx.xxxx [redisURI []]这个错误的话,你需要在redis启动配置中排除一个冲突的依赖

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

改成

        <dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-redis</artifactId>
			<exclusions>
				<exclusion>
					<groupId>io.lettuce</groupId>
					<artifactId>lettuce-core</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1. 概述 Redis是一个高性能的key-value数据库,它支持丰富的数据结构,如字符串、哈希、列表、集合、有序集合等。在实际应用中,为了提高Redis的可用性和扩展性,我们常常使用Redis集群。 本文将介绍如何在Spring Boot项目中集成Redis集群。 2. 环境准备 本文使用的环境如下: - JDK 1.8 - Spring Boot 2.3.8.RELEASE - Redis 5.0.10 - Redis集群 3. 集成Redis集群 3.1. 添加依赖 首先,在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.5.2</version> </dependency> ``` 其中,spring-boot-starter-data-redisSpring BootRedis的支持,jedis是RedisJava客户端。 3.2. 配置Redis集群 在application.properties文件中添加如下配置: ``` # Redis集群配置 spring.redis.cluster.nodes=192.168.0.101:7001,192.168.0.101:7002,192.168.0.101:7003,192.168.0.102:7004,192.168.0.102:7005,192.168.0.102:7006 spring.redis.cluster.max-redirects=3 ``` 其中,spring.redis.cluster.nodes指定了Redis集群中所有节点的地址和端口,多个节点之间用逗号分隔,spring.redis.cluster.max-redirects指定了Redis客户端在执行命令时最多可以重定向的次数,一般设置为3即可。 3.3. 编写代码 在代码中使用Redis时,可以通过注入RedisTemplate来操作RedisRedisTemplate是SpringRedisTemplate的封装,使用起来非常方便。 ```java @Service public class RedisService { @Autowired private RedisTemplate<String, Object> redisTemplate; public void set(String key, Object value) { redisTemplate.opsForValue().set(key, value); } public Object get(String key) { return redisTemplate.opsForValue().get(key); } public void delete(String key) { redisTemplate.delete(key); } } ``` 上述代码中,我们定义了一个RedisService类,其中使用了@Autowired注解注入RedisTemplate,并提供了set、get、delete等操作Redis的方法。 4. 测试 在集成Redis集群Spring Boot项目中,我们可以通过调用RedisService中的方法来操作Redis。下面是一个简的测试用例: ```java @SpringBootTest class RedisClusterApplicationTests { @Autowired private RedisService redisService; @Test void testRedis() { String key = "name"; String value = "John"; // 设置值 redisService.set(key, value); // 获取值 Object result = redisService.get(key); System.out.println(result); // 删除值 redisService.delete(key); } } ``` 在测试用例中,我们首先使用redisService.set方法将一个键值对存入Redis中,然后使用redisService.get方法获取值,并打印出来,最后使用redisService.delete方法删除该键值对。 5. 总结 本文介绍了在Spring Boot项目中集成Redis集群的方法,主要包括添加依赖、配置Redis集群和编写代码等步骤。通过本文的学习,相信大家已经掌握了Spring Boot集成Redis集群的基本方法,可以在实际项目中应用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值