一、准备工作
5.0.4的redis压缩包,可以自行去官网下载。
linux环境
二、解压并且安装
1.新建6个文件夹用于安装redis目录
目录路径为/root/tools/7001
[root@my 7001]# pwd
/root/tools/7001
[root@my 7001]# ls
redis-5.0.4.tar.gz
2.解压并且安装redis
tar -zxvf redis-5.0.4.tar.gz
cd redis-5.0.4
make && make install
执行后执行测试make test 报错如下,tcl这个东西没有,得安装下
解决办法
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
tar xzvf tcl8.6.1-src.tar.gz -C /usr/local/
cd /usr/local/tcl8.6.1/unix/
./configure
make
make install
再次执行make test 这个错误不影响测试就不解决了,也说明一个问题,人生不都是完美的,学会容忍不完美。
3.把这些编译好的文件copy到另外五个文件夹。
修改配置文件
# 本机地址我这是一台机器就写
bind 127.0.0.1
# 端口号
port 7001
# 进程文件
pidfile "/var/run/redis_7001.pid"
#日志文件
logfile "/root/tools/7001/redis-5.0.4/access.log"
# data目录
dir "/root/tools/7001/redis-5.0.4/"
# 开启aof持久化
appendonly yes
#是否开启集群
cluster-enabled yes
# 配置文件
cluster-config-file "nodes-7001.conf"
# 超时时间
cluster-node-timeout 15000
#后台启动
daemonize yes
其他几台的配置文件和这个类似修改。
4.启动redis
[root@my redis-5.0.4]# redis-server redis.conf
[root@my redis-5.0.4]# ps -ef|grep redis
root 94318 1 0 21:44 ? 00:00:00 redis-server 127.0.0.1:7001 [cluster]
root 94330 94276 0 21:44 pts/2 00:00:00 grep --color=auto redis
其余几台也是一样的操作,把redis启动起来。
三、集群启动
这里的replicas 1表示副本为1个,也就是现在是三主,每个主redis下有一个从redis
redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 --cluster-replicas 1
输入yes确认配置
四 测试集群
-c 表示集群模式 redis-cli表示client模式进入redis,-p表示端口号
也就是进入7001这个redis
[root@my redis-5.0.4]# redis-cli -p 7001 -c
127.0.0.1:7001> cluster nodes
a4b7c18d6eccd520a5a186ad8d3dcbdbdac5f92d 127.0.0.1:7002@17002 master - 0 1652883032330 2 connected 5461-10922
63956c905f54e9f17402cf85814b8a43a14b5b8b 127.0.0.1:7003@17003 master - 0 1652883031322 3 connected 10923-16383
208a5250236c36dd898023aa2d8504b0f0de9a4d 127.0.0.1:7004@17004 slave a4b7c18d6eccd520a5a186ad8d3dcbdbdac5f92d 0 1652883030314 4 connected
65eaae02c1ab075f416c259d349032f4d748645e 127.0.0.1:7006@17006 slave 3fd4d7af171cc73f97f8910636081b0e2253d2d1 0 1652883030000 6 connected
87449deef72cdbb210bea73dbe44d8b73874a989 127.0.0.1:7005@17005 slave 63956c905f54e9f17402cf85814b8a43a14b5b8b 0 1652883029000 3 connected
3fd4d7af171cc73f97f8910636081b0e2253d2d1 127.0.0.1:7001@17001 myself,master - 0 1652883028000 1 connected 0-5460
使用cluster nodes看看有哪些其他节点信息。
127.0.0.1:7001> get v
-> Redirected to slot [7761] located at 127.0.0.1:7002
(nil)
127.0.0.1:7002> get c
(nil)
127.0.0.1:7002> get aa
-> Redirected to slot [1180] located at 127.0.0.1:7001
可以看到不同的key值被分配到了不同的机器上,也就是成功部署了redis cluster集群模式
五、使用springboot连接集群
1.pom添加redis starter
<!-- redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2.添加redistemplate
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
Jackson2JsonRedisSerializer serializer=new Jackson2JsonRedisSerializer(Object.class);
RedisTemplate<Object, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory);
template.setKeySerializer(serializer); //设置key序列化
template.setValueSerializer(serializer);//设置value序列化
return template; } }
3.application.properties 文件添加redis集群
spring.redis.cluster.expire-seconds=120
#设置redis集群的节点信息
spring.redis.cluster.nodes=192.168.31.96:7001,192.168.31.96:7002,192.168.31.96:7003,192.168.31.96:7004,192.168.31.96:7005,192.168.31.96:7006
#设置命令的执行时间,如果超过这个时间,则报错
spring.redis.cluster.command-timeout=5000
4.第一次访问的时候超时了,
做了以下改动
4.1 杀掉所有redis进程
4.2 删除文件夹下的nodes-*.conf
4.3 启动修改redis bind ip地址
4.4 启动redis,并且重新配置集群
redis-cli --cluster create 192.168.31.96:7001 192.168.31.96:7002 192.168.31.96:7003 192.168.31.96:7004 192.168.31.96:7005 192.168.31.96:7006 --cluster-replicas 1
4.5 开启端口
[root@my redis-5.0.4]# /sbin/iptables -I INPUT -p tcp --dport 7002 -j ACCEPT
[root@my redis-5.0.4]# /sbin/iptables -I INPUT -p tcp --dport 7003 -j ACCEPT
[root@my redis-5.0.4]# /sbin/iptables -I INPUT -p tcp --dport 7004 -j ACCEPT
[root@my redis-5.0.4]# /sbin/iptables -I INPUT -p tcp --dport 7005 -j ACCEPT
[root@my redis-5.0.4]# /sbin/iptables -I INPUT -p tcp --dport 7006 -j ACCEPT
- 代码中使用redis设置值
6.使用工具访问接口
可以看到已经返回了在代码中设置的redis值。
五、总结
1.本次测试,测试了redis生产中最经常使用的cluster配置集群模式,并且5.0版本是官方推荐的稳定版本。
2.测试了springboot连接集群并且使用。
3.这里会有防火墙的端口问题,需要注意下。