Redis集群操作手册注:redis集群的操作方式有两种:1.通过redis集群管理工具操作2.通过redis客户端操作;注:本文档的redis集群操作以当前部署在40.40.41.30、40.40.41.31上的redis集群为参考1通过redis集群管理工具操作redis集群1创建集群(1)启动redis实例分别进入40.40.41.30主机的/usr/local/cluster/7000、/usr/local/cluster/7001、/usr/local/cluster/7002、/usr/local/cluster/7003和40.40.41.31主机的/usr/local/cluster/7004、/usr/local/cluster/7005、/usr/local/cluster/7006、/usr/local/cluster/7007执行命令:redis-serverredis.conf(2)创建redis集群进入redis集群管理工具所在的路径/usr/local/redis3/redis-3.0.0-rc2/src执行:./redis-trib.rbcreate--replicas140.40.41.30:700040.40.41.30:700140.40.41.30:700240.40.41.30:700340.40.41.31:700440.40.41.31:700540.40.41.31:700640.40.41.31:7007(3)查看集群状态进入redis集群管理工具所在的路径/usr/local/redis3/redis-3.0.0-rc2/src执行:./redis-trib.rbcheck40.40.41.30:7000(链接集群中任意一个实例都可查看集群的整体状态)(4)新增节点和移除节点通过redis客户端比较简便,本文档建议使用redis客户端来操作2通过redis客户端操作redis集群(1)使用redis客户端连接redis服务器执行命令:redis-cli–c–h40.40.41.30–p7000(2)通过redis客户端管理redis集群查看集群状态:clusternodes注:执行该命令之后会打印出集群信息,其中每个节点都有一个node_id,形如5d8ef5a7fbd72ac586bef04fa6de8a88c0671052,这个node_id其他操作要使用的添加redis节点到集群:clustermeetipport移除redis节点:clusterforgetnode_id将当前节点设置为node_id指定的节点的从节点:clusterreplicatenode_id将本节点的slot迁移到node_id指定的节点中参数slot带表要移动的slot的数量:clustersetslotslotmigratingnode_id启动redis实例redis-serverredis.conf查看端口是否在监听netstat-lntp|grep7006停止redis实例redis-cli-h127.0.0.1-p7006shutdown创建cluster./redis-trib.rbcreate--replicas1127.0.0.1:7000127.0.0.1:7001127.0.0.1:7002127.0.0.1:7003127.0.0.1:7004127.0.0.1:7005检查集群状态./redis-trib.rbcheck127.0.0.1:7002删除节点1.删除从节点./redis-trib.rbdel-node192.168.10.220:63859c240333476469e8e2c8e80b089c48f3898272652.删除主节点如果主节点有从节点,将从节点转移到其他主节点;如果主节点有slot,去掉分配的slot,然后在删除主节点1.#redis-trib.rbreshard192.168.10.219:6378//取消分配的slot,下面是主要过程2.Howmanyslotsdoyouwanttomove(from1to16384)?1000//被删除master的所有slot数量3.WhatisthereceivingnodeID?5d8ef5a7fbd72ac586bef04fa6de8a88c0671052//接收6378节点slot的master4.PleaseenterallthesourcenodeIDs.5.Type'all'touseallthenodesassourcenodesforthehashslots.6.Type'done'onceyouenteredallthesourcenodesIDs.7.Sourcenode#1:03ccad2ba5dd1e062464bc7590400441fafb63f2//被删除master的node-id8.Sourcenode#2:done9.10.Doyouwanttoproceedwiththeproposedreshardplan(yes/no)?yes//取消slot后,reshar添加节点1.添加主节点redis-trib.rbadd-node192.168.10.219:6378192.168.10.219:6379注:192.168.10.219:6378是新增的节点;192.168.10.219:6379集群任一个旧节点2.添加从节点redis-trib.rbadd-node--slave--master-id03ccad2ba5dd1e062464bc7590400441fafb63f2192.168.10.220:6385192.168.10.219:6379注释:--slave,表示添加的是从节点--master-id03ccad2ba5dd1e062464bc7590400441fafb63f2,主节点的nodeid,在这里是前面新添加的6378的nodeid192.168.10.220:6385,新节点192.168.10.219:6379集群任一个旧节点1.这些命令是集群所独有的。执行上述命令要先登录2.//集群(cluster)3.CLUSTERINFO打印集群的信息4.CLUSTERNODES列出集群当前已知的所有节点(node),以及这些节点的相关信息。5.6.//节点(node)7.CLUSTERMEETipport将ip和port所指定的节点添加到集群当中,让它成为集群的一份子。8.CLUSTERFORGETnode_id从集群中移除node_id指定的节点。9.CLUSTERREPLICATEnode_id将当前节点设置为node_id指定的节点的从节点。10.CLUSTERSAVECONFIG将节点的配置文件保存到硬盘里面。11.12.//槽(slot)13.CLUSTERADDSLOTSslot[slot...]将一个或多个槽(slot)指派(assign)给当前节点。14.CLUSTERDELSLOTSslot[slot...]移除一个或多个槽对当前节点的指派。15.CLUSTERFLUSHSLOTS移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。16.CLUSTERSETSLOTslotNODEnode_id将槽slot指派给node_id指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽,然后再进行指派。17.CLUSTERSETSLOTslotMIGRATINGnode_id将本节点的槽slot迁移到node_id指定的节点中。18.CLUSTERSETSLOTslotIMPORTINGnode_id从node_id指定的节点中导入槽slot到本节点。19.CLUSTERSETSLOTslotSTABLE取消对槽slot的导入(import)或者迁移(migrate)。20.21.//键(key)22.CLUSTERKEYSLOTkey计算键key应该被放置在哪个槽上。23.CLUSTERCOUNTKEYSINSLOTslot返回槽slot目前包含的键值对数量。24.CLUSTERGETKEYSINSLOTslotcount返回count个slot槽中的键。