Redis集群的使用

来源:互联网 发布:必胜时时彩软件 编辑:程序博客网 时间:2024/05/29 13:22

1、集群架构特点:

(1)所有的 redis 节点彼此互联(PING-PONG 机制),内部使用二进制协议优化传输速度和带宽;

(2)节点的 fail 是通过集群中超过半数的节点检测失效时才生效;

(3)客户端与 redis 节点直连,不需要中间 proxy 层。客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可;

(4)redis-cluster 把所有的物理节点映射到[0-16383]个 slot(哈希槽)上,cluster 负责维护node<->slot<->value 。

2、集群选举容错:

(1)节点失效选举过程是集群中所有 master 参与,如果半数以上 master 节点与当前被检测 master 节点通信检测超时(cluster-node-timeout),就认为当前 master 节点挂掉;

(2)什么时候整个集群不可用(cluster_state:fail)?

A:如果集群任意 master 挂掉,且当前 master 没有 slave。集群进入 fail 状态,也可以理解成集群的slot 映射[0-16383]不完整时进入 fail 状态。 ps : redis-3.0.0.rc1 加入

cluster-require-full-coverage 参数,默认关闭,打开集群兼容部分失败;

B:如果集群超过半数以上 master 挂掉,无论是否有 slave 集群进入 fail 状态。

3、  客户端集群命令

集群

cluster info :打印集群的信息

cluster nodes :列出集群当前已知的所有节点(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)。

cluster keyslot <key>:计算键 key 应该被放置在哪个槽上。

cluster countkeysinslot <slot>:返回槽 slot 目前包含的键值对数量。

cluster getkeysinslot <slot> <count>:返回 count 个 slot 槽中的键。

4、重建集群,步骤:

(1)关闭集群的各节点;

(2)删除各节点数据目录下的 nodes.conf、appendonly.aof、dump.rdb;

rm -rf appendonly.aof | rm -rf dump.rdb | rm -rf nodes.conf

(3)重新启用所有的节点

./install/bin/redis-server ./redis-7111/redis.conf

(4)执行集群创建命令(只需要在其中一个节点上执行一次则可)

cp ./redis/redis-3.2.6/src/redis-trib.rb ./redis/intsall/bin/redis-trib

./redis-trib create --replicas 1 10.10.36.126:7111 10.10.36.126:7112 10.10.36.126:7113 10.10.36.126:7114 10.10.36.126:7115 10.10.36.126:7116

5、查看当前集群各节点的状态

./redis-cli -h 10.10.36.126 -p 7111

cluster nodes

0 0