Ubuntu16.04.1 安装Redis-Cluster

Redis在3.0版正式引入了集群这个特性。Redis集群是一个分布式(distributed)、容错(fault-tolerant)的 Redis内存K/V服务, 集群可使用的功能是普通单机 Redis 所能使用的功能的一个子集(subset),好比Redis集群并不支持处理多个keys的命令,由于这须要在不一样的节点间移动数据,从而达不到像Redis那样的性能,在高负载的状况下可能会致使不可预料的错误。html

Redis集群的几个重要特征:node

(1).Redis 集群的分片特征在于将键空间分拆了16384个槽位,每个节点负责其中一些槽位。linux

(2).Redis提供必定程度的可用性,能够在某个节点宕机或者不可达的状况下继续处理命令.redis

(3).Redis 集群中不存在中心(central)节点或者代理(proxy)节点, 集群的其中一个主要设计目标是达到线性可扩展性(linear scalability)。ruby

安装Redis

经过官网http://redis.io/获取稳定版源码包下载地址;分布式

$ wget http://download.redis.io/releases/redis-3.2.3.tar.gz
$ tar xzf redis-3.2.3.tar.gz
$ cd redis-3.2.3
$ make

注意:

1:可能新linux系统中未安装gcc,经过以下命令安装性能

apt-get install  build-essential

2:在make时可能出现错误error: jemalloc/jemalloc.h: No such file or directory",经过以下命令解决。ui

make MALLOC=libc 

安装Redis-Cluster

首先安装Redis-Cluster依赖库

安装Rubyspa

apt-get install ruby

安装Redis.gemscala

gem intall redis

注意:本步骤须要翻/墙,能够先下载到本地,而后再安装,下载地址https://rubygems.org/gems/redis/versions/3.3.1

gem install /usr/downloads/redis-3.3.1.gem

建立Redis-Cluster,并分配Redis节点

按照端口号,依次建立对应文件夹,并配置redis.conf信息

启动redis实例,查看redis进程

注意:若要让集群正常运做至少须要三个主节点,咱们的环境中,每一个主节点附带一个从节点,因此一共六个节点。

经过redis-trib.rb建立redis集群,命令以下

./redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384

注意:表示1个salve。redis-trib.rb在redis解压目录src中能够找到。

若要让集群正常运做至少须要三个主节点,咱们的环境中,每一个主节点附带一个从节点,因此一共六个节点。

 

建立结果以下图,会提示Can I set the above configuration? (type 'yes' to accept):  

 

输入yes ,而后出现以下图 , [OK] All 16384 slots covered表示建立成功。

 

检查集群状态,选中其中一个节点便可。

链接Redis集群

注意:节点会对命令请求进行分析和key的slot计算,而且会查找这个命令所要处理的键所在的槽。若是要查找的哈希槽正好就由接收到命令的节点负责处理, 那么节点就直接执行这个命令。另外一方面, 若是所查找的槽不是由该节点处理的话, 节点将查看自身内部所保存的哈希槽到节点 ID 的映射记录, 并向客户端回复一个 MOVED 错误。

cluster集群相关命令,更多redis相关命令见文档:http://redis.readthedocs.org/en/latest/

集群  
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 槽中的键。  

本文连接: 文章做者:雨~桐 文章出处:http://www.cnblogs.com/piscesLoveCc/ 若是您以为阅读本文对您有帮助,请点一右下角的“推荐”按钮,您的“推荐”将是我最大的写做动力!欢迎各位转载,可是未经做者本人赞成,转载文章以后必须在文章页面明显位置给出做者和原文链接,不然保留追究法律责任的权利。

相关文章
相关标签/搜索