1. 准备redis 安装包放入 根目录下
2. 执行命令tar -zxvf redis-3.2.0.tar.gz
3 cd redis-3.2.0
4 make&& make install
如果报
说明没有安装gcc
注意:把之前解压的redis-3.2.0 删除掉 重新执行 tar-zxvf redis-3.2.0.tar.gz
因为make &&make install 出现问题了
5 安装gcc
执行命令yum install gcc 这种方式 虚拟机必须有网
6 重新 make &&make install
代表成功
7 执行 cd src/
执行 cpredis-trib.rb /usr/local/bin/
8 创建文件夹
9 复制文件
10 修改复制之后的 redis.conf 文件
11 启动
12 查看
执行ps -ef | grep redis
执行 netstat -tnlp | grep redis
13 安装ruby环境
下载 redis-3.2.2.gem
https://rubygems.global.ssl.fastly.net/gems/redis-3.2.2.gem
文件放到服务器运行
14 执行下面的命令
redis-trib.rb create --replicas 2192.168.137.151:7000 192.168.137.151:7001 192.168.137.151:7002 192.168.137.152:7003192.168.137.152:7004 192.168.137.152:7005 192.168.137.153:7006192.168.137.153:7007 192.168.137.153:7008
15 集群验证
执行命令redis-cli -h 192.168.137.151 -c -p 7000
16 查看redis 集群情况
执行命令redis-trib.rb check 192.168.137.151:7000
17 集群节点选举
当前情况
192.168.137.153:7008 Master 对应的子节点192.168.137.152:7003 和 192.168.137.153:7007
在192.168.137.153 这台服务器上执行ps -ef | grep redis
执行kill -9 1643 强制杀掉 192.168.137.153:7008 Master 节点
然后执行redis-trib.rb check 192.168.137.151:7000
发现192.168.137.153:7008 Master 节点没有了 对应的子节点192.168.137.153:7007
变成了master 192.168.137.152:7003节点的主节点也对应到了192.168.137.153:7007
重新在启动192.168.137.153:7008这个节点
执行命令redis-server /usr/local/redis_cluster/7008/redis.conf
然后执行redis-trib.rb check 192.168.137.151:7000
发现 192.168.137.153:7008 节点变成了 192.168.137.153:7007的子节点
18 集群节点添加
添加主节点
新增一个 7009 按照上面的步骤添加一个节点 修改 redis.conf文件 之后启动
执行命令redis-trib.rb add-node 192.168.137.153:7009 192.168.137.151:7000
前面为要添加的节点后面为集群里的任意一个节点都可以
然后在执行redis-trib.rb check 192.168.137.151:7000
发现添加的7009是Master 没有附属节点,而且并未给7009分配哈希槽
执行命令redis-trib.rb reshard 192.168.137.151:7000 后面为集群redis任意地址即可
它提示我们需要迁移多少slot到7009上,我们平分16384个哈希槽给4个节点:16384/4= 4096,我们需要移动4096个槽点到7009上 输入4096就可以
输入7009的节点id 89c9325042e3e1016c06d3988b852a9e047dc922
redis-trib 会向你询问重新分片的源节点(source node),即,要从特点的哪个节点中取出 4096 个哈希槽,还是从全部节点提取4096个哈希槽, 并将这些槽移动到7009节点上面。
如果我们不打算从特定的节点上取出指定数量的哈希槽,那么可以向redis-trib输入 all,这样的话, 集群中的所有主节点都会成为源节点,redis-trib从各个源节点中各取出一部分哈希槽,凑够4096个,然后移动到7009节点上:
最后结果
slots:0-1364,5461-6826,10923-12287(4096 slots) master
可以看到7009节点分片的哈希槽片不是连续的,间隔的移动。
可以看到 之前添加key是name的 移动到了7009的节点上
添加从节点
新增一个 7010 按照上面的步骤添加一个节点 修改 redis.conf文件 之后启动
执行命令
redis-trib.rb add-node --slave --master-id 89c9325042e3e1016c06d3988b852a9e047dc922192.168.137.153:7010 192.168.137.151:7000
--master-id后面为主节点id 前面的地址为要添加的子节点 后面的地址为集群的任意地址即可
192.168.137.153:7010 已经添加进去
******
感觉最好的处理方式
添加好新主从节点之后 在进行 reshard
如果只添加添加主节点 reshard 如果集群子节点比较多会动态重新分配 主从位置
还有测试发现 reshard之后主节点aof里的日志内容会存放rdb快照的格式
但是对应的子节点还是aof格式 解决方式 把主节点干掉 让子变主 在启动原来的主 就变成子了。
19 节点的移除
移除从节点
执行命令
redis-trib del-node192.168.137.151:7000 ee3cd4823c05c1c557d29be86258f41c4544da0c
ee3cd4823c05c1c557d29be86258f41c4544da0c为7010节点
发现7010节点没有了
删除主节点
执行
redis-trib.rb del-node192.168.137.151:7000 89c9325042e3e1016c06d3988b852a9e047dc922
因为有数据, 也要reshard才可以
执行redis-trib.rb reshard 192.168.137.151:7000 后面地址任意即可
执行以后会提示我们移除的大小,因为7009占用了4096个槽点
输入4096
提示接收信息的地址这里用的是 7000的id
ca46d7da5a9c18ea470cc4294801438db2130eed
这块写移除7009的id
89c9325042e3e1016c06d3988b852a9e047dc922
7009 已经没有槽了 可以删除掉了
执行
redis-trib.rb del-node 192.168.137.151:700089c9325042e3e1016c06d3988b852a9e047dc922
20 . 当出现下面的问题
本人遇到的情况当服务器关闭 或 重启 redis的所有进程都会关闭
启动服务器然后重新启动redis的所有节点
check的时候 会看打下面的问题
可以使用redis-trib.rb fix 192.168.137.151:7000这个命令修复
21 命令相关
执行 rpush mylist a b c d e f g 这个命令还可以向右追加
取值如下
lrange mylist 0 -1 所有
设置hello过期时间120秒
expire hello 120
ttl 命令有3种返回值
大于等于0的整数 键剩余的过期时间 -1 键没设置过期时间 -2 键不存在
学习网址:http://blog.csdn.net/fengshizty/article/details/51368004
https://www.cnblogs.com/wuxl360/p/5920330.html