目录
1 集群搭建
2 Spring Boot连接
本文将演示Redis Cluster的伪集群搭建过程,用一台虚拟机来模拟搭建六个节点,三主三从的集群效果。我虚拟机的ip是192.168.253.129,Redis的版本是5.0.5。
我的Redis安装目录在/usr/redis/redis-5.0.5/这个路径下,首先在该路径下创建一个redis-cluster的目录并在其下创建六个子目录来模拟六个节点:
mkdir -p /usr/redis/redis-5.0.5/redis-cluster
cd redis-cluster
mkdir 7001
mkdir 7002
mkdir 7003
mkdir 7004
mkdir 7005
mkdir 7006
接着将redis.conf配置文件分别复制到这六个目录下:
cp redis.conf redis-cluster/7001
cp redis.conf redis-cluster/7002
cp redis.conf redis-cluster/7003
cp redis.conf redis-cluster/7004
cp redis.conf redis-cluster/7005
cp redis.conf redis-cluster/7006
并修改以下的配置项。以7001为例,其他的可进行对比修改:
daemonize yes
port 7001
bind 192.168.253.129
dir /usr/redis/redis-5.0.5/redis-cluster/7001/
cluster-enabled yes
cluster-config-file nodes-7001.conf
cluster-node-timeout 5000
appendonly yes
随后我们将redis-server和redis-cli文件分别复制到这六个子目录下:
cp redis-server ../redis-cluster/7001
cp redis-server ../redis-cluster/7002
cp redis-server ../redis-cluster/7003
cp redis-server ../redis-cluster/7004
cp redis-server ../redis-cluster/7005
cp redis-server ../redis-cluster/7006
cp redis-cli ../redis-cluster/7001
cp redis-cli ../redis-cluster/7002
cp redis-cli ../redis-cluster/7003
cp redis-cli ../redis-cluster/7004
cp redis-cli ../redis-cluster/7005
cp redis-cli ../redis-cluster/7006
然后就可以分别启动这六个节点了,启动之后使用ps命令查看是否启动成功:
./redis-server redis.conf
ps -ef | grep redis
由上所示,六个节点都成功启动,接着就可以下一步操作了。
因为从Redis5.0开始,redis-cli中的集群管理器从Ruby(redis-trib.rb)移植到了C语言代码,也就是说我们不再需要下载Ruby及其Redis相关的集成,也不再需要执行redis-trib.rb来启动集群,只需要redis-cli即可,下面来演示其搭建过程。随便在一个节点下输入下面的命令来搭建集群:
./redis-cli --cluster create 192.168.253.129:7001 192.168.253.129:7002 192.168.253.129:7003 192.168.253.129:7004 192.168.253.129:7005 192.168.253.129:7006 --cluster-replicas 1
上面最后面的1代表着主节点和从节点的比值,放在这里也就是3个主节点3个从节点,如果配置成0.5则是2主4从,配置成2则是4主2从。当我们输入完后的效果如下图所示:
可以看到默认的哈希槽分配,以及每个从节点对应的主节点是谁。我们继续输入yes后即可看到集群搭建成功。最后我们来进行验证,在7001、7002和7004节点上输入以下的命令来进行连接:
./redis-cli -c -h 192.168.253.129 -p 7001
./redis-cli -c -h 192.168.253.129 -p 7002
./redis-cli -c -h 192.168.253.129 -p 7004
注意因为我们现在是集群模式,所以必须输入ip和端口号才能连接成功,-c代表集群模式。这里我们连接3个节点,7001、7002和7004来进行验证。然后我们在7001的客户端上创建一个键值对并查看结果:
可以看到这个“name”的key被存储到了第5798个槽中,同时请求被转向到7002节点处。我们在7002节点上查看key:
可以看到是有key为“name”这条数据的,验证成功。
Redis集群的Spring Boot连接方式非常简单,只需要在application.properties配置文件中把之前单机配置的ip和端口号注释掉,换成集群的nodes节点即可,用逗号分隔:
#spring.redis.host=192.168.253.129
#spring.redis.port=6379
spring.redis.cluster.nodes=192.168.253.129:7001, 192.168.253.129:7002, 192.168.253.129:7003, 192.168.253.129:7004, 192.168.253.129:7005, 192.168.253.129:7006
完成这步操作后就大功告成了,就能像先前那样通过RedisTemplate来操作Redis了。