1:redis下载
下载路径:http://download.redis.io/releases/
2:将下载好的文件上传至服务器
rz命令执行上传
3:创建目录
mkdir redisCluter
mkdir 7000 7001 7002 7003 7004 7005
4:修改配置文件如下:
# 端口号,每个目录都不同
port 7000
# 开启集群模式
cluster-enabled yes
#节点超时实际,单位毫秒
cluster-node-timeout 5000
#集群内部配置文件(默认为 nodes-6379.conf)
cluster-config-file nodes.conf
# 启动 AOF
appendonly yes
#daemonize是用来指定redis是否要用守护线程的方式启动。
#默认是no,改成 yes,意思是是否要后台启动。
daemonize yes
#当我们采用yes时,redis会在后台运行,此时redis将一直运行,除非手动kill该进程。同时将进程pid号写入至redis.conf选项pidfile设置的文件中,
#默认会生成在/var/run/redis.pid,也可以通过pidfile来指定pid文件生成的位置
#而采用no时,当前界面将进入redis的命令行界面,exit强制退出或者关闭连接工具(putty,xshell等)都会导致redis进程退出
#################此次示例演示只需修改以上配置也可以,以下配置可根据自己项目需要变更#################
# 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定
pidfile /var/run/redis.pid
# 指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose
# debug (很多信息, 对开发/测试比较有用)
# verbose (许多很少有用的信息,但不像调试级别那样混乱)
# notice (适度冗长,你想在生产中)
# warning (只记录非常重要/关键的消息)
loglevel verbose
################################ SNAPSHOTTING #################################
# 指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合
# Save the DB on disk:
#
# save <seconds> <changes>
#
# Will save the DB if both the given number of seconds and the given
# number of write operations against the DB occurred.
#
# 满足以下条件将会同步数据:
# 900秒(15分钟)内有1个更改
# 300秒(5分钟)内有10个更改
# 60秒内有10000个更改
# Note: 可以把所有“save”行注释掉,这样就取消同步操作了
save 900 1
save 300 10
save 60 10000
# 指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大
rdbcompression yes
# 指定本地数据库文件名,默认值为dump.rdb
dbfilename dump.rdb
# 指定更新日志条件,共有3个可选值:
# no:表示等操作系统进行数据缓存同步到磁盘(快)
# always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)
# everysec:表示每秒同步一次(折衷,默认值)
appendfsync everysec
################################## INCLUDES ###################################
# 指定包含其他的配置文件,可以在同一主机上多个Redis实例之间使用同一份配置文件,而同时各实例又拥有自己的特定配置文件
# include /path/to/local.conf
# include /path/to/other.conf
5:启动六个节点的redis
分别进入六个文件夹下执行启动命令:redis-server redis.conf
6:查看启动情况
ps -ef|grep redis
7:关联所有节点,进入7000节点
redis-cli -p 7000
依次执行如下命令关联所有节点:
cluster meet 127.0.0.1 7001
cluster meet 127.0.0.1 7002
cluster meet 127.0.0.1 7003
cluster meet 127.0.0.1 7004
cluster meet 127.0.0.1 7005
8:分配槽slot(数据块)
cd 7002/redis-7.4-rc1
redis-cli -p 7000 cluster addslots {0..5461}
redis-cli -p 7001 cluster addslots {5462..10922}
redis-cli -p 7002 cluster addslots {10923..16383}
9:验证slot是否分配成功命令
redis-cli -p 7000 cluster nodes
10:修改为主从复制
先进入7000目录下:
cd 7000/redis-7.4-rc1
执行验证命令,记下各个节点的NodeId
redis-cli -p 7000 cluster nodes
分别设置7003、 7004 、7005节点的主库
redis-cli -p 7003 cluster replicate 248ec24662f43e13e0f6a33990b9bf479b2e4495 (7000的NodeID)
redis-cli -p 7004 cluster replicate 8e4b9fa9e15824b3a4ee34497a4e1842080500f2 (7001的NodeID)
redis-cli -p 7005 cluster replicate 7272c16417975b443a5b84afa5d8e90ccd332ca8 (7002的NodeID)
11:查看主从节点是否已经生效
redis-cli -p 7000 cluster nodes
12:查看集群
$ redis-cli -h 127.0.0.1 -p 7000 cluster info
$ redis-cli -h 127.0.0.1 -p 7000 cluster nodes
13:操作集群
redis-cli -p 7000
127.0.0.1:7000> get foo
(error) MOVED 12182 127.0.0.1:7002
127.0.0.1:7000> set fooo barr
OK
127.0.0.1:7000> get foo
(error) MOVED 12182 127.0.0.1:7002
127.0.0.1:7000> get fooo
"barr"
127.0.0.1:7000> quit
redis-cli -p 7003
127.0.0.1:7003> get fooo
(error) MOVED 3916 127.0.0.1:7000
127.0.0.1:7003> quit
redis-cli -c -p 7003
注意:注意添加 -c 参数表示以集群模式,否则报 (error) MOVED 12182 127.0.0.1:7002 错误
参考大神的帖子,精简整理
参考地址: