Redis集群

Redis集群

 

简介

redis集群是一个无中心的分布式Redis存储架构,可以在多个节点之间进行数据共享,解决了Redis高可用、可扩展等问题。

 

 

Redis集群的特点

1、将数据自动切分(split)到多个节点

2、当集群中的某一个节点故障时,redis还可以继续处理客户端的请求。

 

 

集群中的主从复制

集群中的每个节点都有1个至N个复制品,其中一个为主节点,其余的为从节点,如果主节点下线了,集群就会把这个主节点的一个从节点设置为新的主节点,继续工作。这样集群就不会因为一个主节点的下线而无法正常工作。

 

 

注意:

1、如果某一个主节点和他所有的从节点都下线的话,redis集群就会停止工作了。redis集群不保证数据的强一致性,在特定的情况下,redis集群会丢失已经被执行过的写命令

2、使用异步复制(asynchronous replication)是 Redis 集群可能会丢失写命令的其中一个原因,有时候由于网络原因,如果网络断开时间太长,redis集群就会启用新的主节点,之前发给主节点的数据就会丢失。


Redis集群
 

 

安装配置

 

修改配置文件redis.conf

 

daemonize yes  
port 6379  
cluster-enabled yes  
cluster-config-file nodes.conf  
cluster-node-timeout 5000 

 

 

要让集群正常运作至少需要三个主节点

我们这里就简单在一台主机上创建6个redis节点来演示集群配置,实际生产环境中需要每个节点一台主机。

 

我们要创建的6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下:

 

192.168.33.130:7000  
192.168.33.130:7001  
192.168.33.130:7002  
192.168.33.130:7003  
192.168.33.130:7004  
192.168.33.130:7005 

 

 

1、首先我们创建6个以端口为名称的文件夹(由于每个redis节点启动的时候,都会在当前文件夹下创建快照文件,所以我们需要创建每个节点的启动目录)

 

mkdir 7000  
mkdir 7001  
mkdir 7002  
mkdir 7003  
mkdir 7004  
mkdir 7005 

 

 

2、接下来把每个节点启动所需要的配置文件拷贝到相应的启动目录:

 

cp redis.conf  7000  
cp redis.conf  7001  
cp redis.conf  7002  
cp redis.conf  7003  
cp redis.conf  7004  
cp redis.conf  7005 

 

 

3、然后我们进入每个启动目录,修改之前拷贝的redis.conf文件中的端口port 为上面列出的对应端口。

最终每个节点的配置类似于:

 

daemonize yes  
port 6379     #只有端口不同,其他相同  
cluster-enabled yes  
cluster-config-file nodes.conf  
cluster-node-timeout 5000 

 

 

4、进入每个启动目录,以每个目录下的redis.conf文件启动


Redis集群
 

使用命令查看redis节点是否启动:

ps -ef | grep redis  


Redis集群
 

5、创建集群命令 

 

redis-trib.rb  create --replicas 1 192.168.33.130:7000 192.168.33.130:7001 192.168.33.130:7002 192.168.33.130:7003 192.168.33.130:7004 192.168.33.130:7005 

 

 

注意:

5.1、执行上面的命令的时候可能会报错,因为是执行的ruby的脚本,需要ruby的环境

错误内容:

Redis集群
 

所以我们需要安装ruby的环境,这里推荐使用yum安装:

 

yum install ruby

 

 

5.2、安装ruby后,执行命令可能还会报错,提示缺少rubygems组件,使用yum安装

Redis集群
 

解决方法:

 

yum install rubygems

 

 

5.3、上面两个步骤后,执行创建集群目录可能还会报错,提示不能加载redis,是因为缺少redis和ruby的接口,使用gem 安装。

Redis集群
 

解决方法:

 

gem install redis 

 

 

 

上面三个问题解决后,启动创建集群应该可以正常启动了:


Redis集群
 

6、接下来我们使用命令进入集群环境

 

redis-cli -c -p 7000 

 

 

 

redis集群操作

 

1. 使用redis-cli客户端来操作redis集群,使用命令 :

redis-cli -c  -p [port] 

 
Redis集群
 

2. 查看集群中的所有主节点信息

redis-cli -c -p 7000 cluster nodes [| grep master] 

 
Redis集群
 

 

 

 添加删除节点

http://blog.csdn.net/u011204847/article/details/51307044