1.安装redis
mac环境用brew install安装
brew install redis
安装好后默认配置启动单点服务
redis-server
注:brew默认程序安装在/usr/local/Cellar目录下
/usr/local/Cellar/redis
默认配置文件在
/usr/local/etc/redis.conf
2.创建配置文件
准备创建6个节点,方便起见,创建6个工作目录,根据准备的端口号创建目录
cd ~
mkdir rediscluster
cd rediscluster
mkdir 8001 8002 8003 8004 8005 8006
先将默认配置文件拷贝到8001中,修改改配置文件
cd 8001
cp /usr/local/etc/redis.conf redis.conf
vi redis.conf
找到配置文件以下关键字并修改
# 端口号,每个目录都不同
port 800X
# 开启集群模式
cluster-enabled yes
#节点超时实际,单位毫秒
cluster-node-timeout 5000
# 每个Redis集群节点/实例需要一个单独的配置文件,同一宿主机系统中不同实例的配置文件名称不能冲突
cluster-config-file nodes-800X.conf
# 启动 AOF
appendonly yes
作者:等到的等待
链接:https://juejin.cn/post/6998537296899211278
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
将修改后的配置文件复制到其他几个文件夹中,并修改相应端口号
然后逐一进入各个目录,执行命令:
redis-server redis.conf
3.关联所有节点
所有节点已经启动,但此时他们都是相互独立的单个集群节点。要想实现集群,必须将他们关联起来,随便进入一个节点的redis-cli
执行下面的命令:
redis-cli -p 8001
127.0.0.1:8001> cluster meet 127.0.0.1 8002
OK
127.0.0.1:8001> cluster meet 127.0.0.1 8003
OK
127.0.0.1:8001> cluster meet 127.0.0.1 8004
OK
127.0.0.1:8001> cluster meet 127.0.0.1 8005
OK
127.0.0.1:8001> cluster meet 127.0.0.1 8006
OK
此时所有的节点都关联起来了
4.分配slot
redis Cluster是由16384个slot组成的,那么我们需要将这些槽分散到这其中的3个节点里(3主3从)
执行命令:
redis-cli -p 8001 cluster addslots {0..5461}
redis-cli -p 8003 cluster addslots {5462..10922}
redis-cli -p 8005 cluster addslots {10923..16383}
此时节点已经分配好了。通过一下命令验证
redis-cli -p 8001 cluster nodes
2e2765b574da0ed4532b4568ba3d9536496955c4 127.0.0.1:8006@18006 master - 0 1672488398329 5 connected
b3d3bbfe7f6ec8c5c949bf6e60c82147f6cd7f7e 127.0.0.1:8003@18003 master - 0 1672488396315 3 connected 5462-10922
fcb16440bc6156034fe22fc268e5dc21d58af468 127.0.0.1:8004@18004 master - 0 1672488397825 0 connected
e6e8d6884e004d9cc58c3b5599eab456fda43fb0 127.0.0.1:8005@18005 master - 0 1672488398000 4 connected 10923-16383
4856476e14fe48e15418718f98a2aabc89a4bca4 127.0.0.1:8001@18001 myself,master - 0 1672488396000 1 connected 0-5461
74ff13d26dc78a166e24f2ac7de084e842fcdadb 127.0.0.1:8002@18002 master - 0 1672488397321 2 connected
从图中可以看出,8001、8003、8005节点都已经有了slot
5.主从复制
主节点已经有了slot,下一步将主节点与从节点进行关联,形成主从复制关系。
注意:需要从节点的cli命令窗口关联主节点
redis-cli -p 8002 cluster replicate 4856476e14fe48e15418718f98a2aabc89a4bca4
OK
redis-cli -p 8004 cluster replicate b3d3bbfe7f6ec8c5c949bf6e60c82147f6cd7f7e
OK
redis-cli -p 8006 cluster replicate e6e8d6884e004d9cc58c3b5599eab456fda43fb0
OK
后面字符串为相应主节点的id,可以再次执行命令
redis-cli -p 8001 cluster nodes
可以看到主从已经分配好
6.工具搭建集群
以上命令比较繁琐,可以通过redis提供的小公举redis-trib.rb进行搭建,采用ruby便携,内部也是通过这些命令,本片为了理解redis cluster原理,就不采用这种方式了。具体搭建方法可以自行google。
7.验证集群
redis-cli -p 8001
127.0.0.1:8001> set a b
(error) MOVED 15495 127.0.0.1:8005
看到上面命令报错,是因为用redis-cli连接时没有启动集群模式,需要添加参数-c
redis-cli -c -p 8001
127.0.0.1:8001> set a b
-> Redirected to slot [15495] located at 127.0.0.1:8005
OK
127.0.0.1:8005> get a
"b"
127.0.0.1:8005> keys *
1) "a"
127.0.0.1:8005> set a c
OK
127.0.0.1:8005> get a
"c"
127.0.0.1:8005> set b d
-> Redirected to slot [3300] located at 127.0.0.1:8001
OK
127.0.0.1:8001> get b
"d"
上图可以看到,连接节点8001,添加key value后从定向存至8005执行了set操作。之后的一系列操作为练习命令