常见设置
设置最大内存
maxmemory 2548000000
如果不需要持久化时,去掉持久化功能
注释掉save行
启动时作用守护进程
daemonize yes
集群配置
port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
集群设置
yum -y install ruby ruby-devel rubygems rpm-build
gem install redis
redis-trib.rb create --replicas 1 10.1.xx.xx:7000 10.1.xx.xx:7000 10.1.xx.xx:7000 10.1.xx.xx:7000 10.1.xx.xx:7000 10.1.xx.xx:7000
常见命令
查看集群状态
redis/src/redis-cli -p 7000 cluster nodes
集群信息
cluster info
查看集群key的分布
./redis-trib.rb info ip:port
响应
10.1.xx.xx:7005 (6960df47...) -> 196 keys | 5461 slots | 1 slaves.
10.1.xx.xx:7003 (d0c98f2e...) -> 204 keys | 5462 slots | 1 slaves.
10.1.xx.xx:7002 (a20e2c37...) -> 216 keys | 5461 slots | 1 slaves.
其它命令
//集群(cluster)
CLUSTER INFO 打印集群的信息
CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息。
//节点(node)
CLUSTER MEET 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。
CLUSTER FORGET 从集群中移除 node_id 指定的节点。
CLUSTER REPLICATE 将当前节点设置为 node_id 指定的节点的从节点。
CLUSTER SAVECONFIG 将节点的配置文件保存到硬盘里面。
//槽(slot)
CLUSTER ADDSLOTS [slot ...] 将一个或多个槽(slot)指派(assign)给当前节点。
CLUSTER DELSLOTS [slot ...] 移除一个或多个槽对当前节点的指派。
CLUSTER FLUSHSLOTS 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
CLUSTER SETSLOT NODE 将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。
CLUSTER SETSLOT MIGRATING 将本节点的槽 slot 迁移到 node_id 指定的节点中。
CLUSTER SETSLOT IMPORTING 从 node_id 指定的节点中导入槽 slot 到本节点。
CLUSTER SETSLOT STABLE 取消对槽 slot 的导入(import)或者迁移(migrate)。
//键 (key)
CLUSTER KEYSLOT 计算键 key 应该被放置在哪个槽上。
CLUSTER COUNTKEYSINSLOT 返回槽 slot 目前包含的键值对数量。
CLUSTER GETKEYSINSLOT 返回 count 个 slot 槽中的键。
手动故障转义
Redis 集群支持使用 CLUSTER FAILOVER 命令来手动故障转移,必须在故障转移的主服务的其中一个从服务器上执行,执行完成后,则主节点变成从节点。
原理: 连接到正在故障转移的主服务器的客户端停止了,同时主服务器发送复制偏移量给从服务器,等待到达这个偏移量。当复制偏移量到达之后,故障转义就开始了,旧的主服务器被通知切换配置,当客户端在旧主服务器上接触阻塞时,就被重定向到新的主服务器。
恢复master
启动故障节点
在故障节点上执行
cluster replicate 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e
其中3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e 为master的节点id