CLUSTER INFO 打印集群的信息
CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息。
//节点(node)
CLUSTER MEET <ip> <port> 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。
CLUSTER FORGET <node_id> 从集群中移除 node_id 指定的节点。
CLUSTER REPLICATE <node_id> 将当前节点设置为 node_id 指定的节点的从节点。
CLUSTER SAVECONFIG 将节点的配置文件保存到硬盘里面。
//槽(slot)
CLUSTER ADDSLOTS <slot> [slot ...] 将一个或多个槽(slot)指派(assign)给当前节点。
CLUSTER DELSLOTS <slot> [slot ...] 移除一个或多个槽对当前节点的指派。
CLUSTER FLUSHSLOTS 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
CLUSTER SETSLOT <slot> NODE <node_id> 将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。
CLUSTER SETSLOT <slot> MIGRATING <node_id> 将本节点的槽 slot 迁移到 node_id 指定的节点中。
CLUSTER SETSLOT <slot> IMPORTING <node_id> 从 node_id 指定的节点中导入槽 slot 到本节点。
CLUSTER SETSLOT <slot> STABLE 取消对槽 slot 的导入(import)或者迁移(migrate)。
//键 (key)
CLUSTER KEYSLOT <key> 计算键 key 应该被放置在哪个槽上。
CLUSTER COUNTKEYSINSLOT <slot> 返回槽 slot 目前包含的键值对数量。
CLUSTER GETKEYSINSLOT <slot> <count> 返回 count 个 slot 槽中的键。
http://blog.51yip.com/nosql/1726.html/comment-page-1
http://hot66hot.iteye.com/blog/2050676/
安装步骤
wget http://download.redis.io/releases/redis-3.2.1.tar.gz
tar -zxvf redis-3.2.1.tar.gz
cd redis-3.2.1
make && make install
mkdir /home/redis
cd /home/redis
mkdir 7000 7002 7003 7004 7005
修改redis.conf
port 7000
daemonize yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
bind 172.16.97.5 必须绑定真实IP,否则集群启动不了
修改完以后复制6分到对应目录并且改成对应的端口和名称
启动所有的实例
/home/redis/redis-3.2.1/src/redis-server /home/redis/7000/redis.7000.conf
安装ruby
yum install ruby ruby-devel rubygems
gem 安装 redis ruby 接口
gem install redis,
wget https://rubygems.org/downloads/redis-3.3.0.gem, 安装包安装 gem install -l /data/soft/redis-3.0.0.gem
rm -rf /home/redis/7000/dump.rdb nodes.conf
rm -rf /home/redis/7001/dump.rdb nodes.conf
rm -rf /home/redis/7002/dump.rdb nodes.conf
rm -rf /home/redis/7003/dump.rdb nodes.conf
rm -rf /home/redis/7004/dump.rdb nodes.conf
rm -rf /home/redis/7005/dump.rdb nodes.conf
/home/redis/redis-3.2.1/src/redis-server /home/redis/redis.7000.conf
/home/redis/redis-3.2.1/src/redis-server /home/redis/redis.7001.conf
/home/redis/redis-3.2.1/src/redis-server /home/redis/redis.7002.conf
/home/redis/redis-3.2.1/src/redis-server /home/redis/redis.7003.conf
/home/redis/redis-3.2.1/src/redis-server /home/redis/redis.7004.conf
/home/redis/redis-3.2.1/src/redis-server /home/redis/redis.7005.conf
创建集群 replicas 表示为集群中的master 分配几个slave 节点
/home/redis/redis-3.2.1/src/redis-trib.rb create --replicas 1 172.16.97.5:7000 172.16.97.10:7002 172.16.97.18:7004 172.16.97.10:7003 172.16.97.5:7001 172.16.97.18:7005
集群创建成功
查看集群状态 /home/redis/redis-3.2.1/src/redis-trib.rb check 172.16.97.5:7000
进入集群 /home/redis/redis-3.2.1/src/redis-cli -c -h 172.16.97.5 -p 7000
添加主节点
1:启动一个新节点
2:redis-trib.rb add-node 172.16.97.5:7006 172.16.97.5:7000
3 注释:172.16.97.5:7006 为新节点,172.16.97.5:7000 为集群中的任意主节点
添加从节点
redis-trib.rb add-node --slave --master-id 03ccad2ba5dd1e062464bc7590400441fafb63f2 172.16.97.5:7007 172.16.97.5:7000
--slave,表示添加的是从节点
--master-id 03ccad2ba5dd1e062464bc7590400441fafb63f2,主节点的nodeid,在这里是前面新添加的7006的nodeid
172.16.97.5:7007 新节点
172.16.97.5:7000集群任一个主节点
重新shard slot
redis-trib.rb reshard 172.16.97.5:7000
改变从节点的master
redis-cli -c -p 172.16.97.5:7007
输入命令:cluster replicate 5d8ef5a7fbd72ac586bef04fa6de8a88c0671052 //新master的nodeid
删除从节点:
redis-trib.rb del-node 172.16.97.5:7007 9c240333476469e8e2c8e80b089c48f389827265
删除主节点
如果主节点有从节点,将从节点转移到其他主节点
如果主节点有slot,去掉分配的slot,然后再删除主节点
redis-trib.rb reshard 172.16.97.5:7006
redis-trib.rb del-node 172.16.97.5:7006 03ccad2ba5dd1e062464bc7590400441fafb63f2
导入数据
/home/redis/redis-3.2.1/src/redis-trib.rb import --from 172.16.97.3:6380 172.16.97.5:7000
上面的命令是把 172.16.97.3:6380(redis 2.8)上的数据导入到 172.16.97.5:7000 这个节点所在的集群
redis-cli -p 6380 -n 1 keys '*' | xargs -I '{}' redis-cli -p 6380 -n 1 move '{}' 0
把 database 1的Key move 到 database 0
redis-cli -p 6379 -n 2 keys '*' | xargs -I '{}' redis-cli -p 6379 -n 2 migrate 172.16.97.17 6379 '{}' 2 1000
COPY and REPLACE are available only in 3.0 and above. KEYS is available
/home/redis-2.8.13/src/redis-cli -p 6380 -n 1 keys '*' | xargs -I '{}' /home/redis-2.8.13/src/redis-cli -p 6380 -n 1 migrate 172.16.97.5 7000 '{}' 1 1000
cat /tmp/users.txt | xargs -I '{}' /home/redis/redis-3.2.3/src/redis-cli -h 172.16.97.10 -p 7000 -n 1 sadd downip:mail:users '{}'