从redis 3.0之后版本支持redis-cluster集群,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。其redis-cluster架构图如下:
其结构特点:
redis集群有一个投票容错机制,判断一个节点是不是挂了的评定标准是超过集群总节点数一半数量认定该节点宕机,即该节点被认定挂了,节点与节点之间通过ping-pong的机制,说白了就是节点与节点是否能ping通,所以一个集群至少要有三个节点,当一个挂掉,投票数就为2/3,满足要求,但是一个节点挂掉,redis集群的槽就会缺失,导致整个集群瘫痪,所以为了实现高可用,每个节点还要有一个从节点,所以最小的redis集群至少要六台redis服务器。
Redis集群预分好16384个槽位,每一个节点映射一定范围的槽(大致平均),当需要在 Redis 集群中放置一个 key-value 时,key被哈希函数映射到一个槽位, crc16(key) mod 16384的值,决定将目标值放到哪个槽中,做到了每一个节点的负载均衡。
1.1. Redis的安装
Redis是c语言开发的。
安装redis需要c语言的编译环境。如果没有gcc需要在线安装。yum install gcc-c++
安装步骤:
第一步:redis的源码包上传到linux系统。
第二步:解压缩redis。
第三步:编译。进入redis源码目录。make
第四步:安装。make install PREFIX=/usr/local/redis
PREFIX参数指定redis的安装目录。一般软件安装到/usr目录下
1.2. 连接redis
1.2.1. redis的启动:
前端启动:
在redis的安装目录下直接启动redis-server
[root@localhost bin]# ./redis-server
后台启动:
把/root/redis-3.0.0/redis.conf复制到/usr/local/redis/bin目录下
[root@localhost redis-3.0.0]# cp redis.conf /usr/local/redis/bin/
修改配置文件:
daemonize yes#是否作为守护进程运行
[root@localhost bin]# ./redis-server redis.conf
查看redis进程:
[root@localhost bin]# ps aux|grep redis
root 5190 0.1 0.3 33936 1712 ? Ssl 18:23 0:00 ./redis-server*:6379
root 5196 0.0 0.1 4356 728 pts/0 S+ 18:24 0:00 grep redis
1.2.2. Redis-cli
[root@localhost bin]# ./redis-cli
默认连接localhost运行在6379端口的redis服务。
[root@localhost bin]# ./redis-cli -h192.168.25.153 -p 6379
-h:连接的服务器的地址
-p:服务的端口号
关闭redis:[root@localhost bin]# ./redis-clishutdown
1.1. Redis集群的搭建
Redis集群中至少应该有三个节点。要保证集群的高可用,需要每个节点有一个备份机。
Redis集群至少需要6台服务器。
搭建伪分布式。可以使用一台虚拟机运行6个redis实例。需要修改redis的端口号7001-7006
1.1.1. 集群搭建环境
1、使用ruby脚本搭建集群。需要ruby的运行环境。
安装ruby
yum install ruby
yum install rubygems
2、安装ruby脚本运行使用的包。
[root@localhost ~]# gem install redis-3.0.0.gem
Successfully installed redis-3.0.0
1 gem installed
Installing ri documentation forredis-3.0.0...
Installing RDoc documentation forredis-3.0.0...
[root@localhost ~]#
[root@localhost ~]# cd redis-3.0.0/src
[root@localhost src]# ll *.rb
-rwxrwxr-x. 1 root root 48141 Apr 1 2015redis-trib.rb
1.1.2. 搭建步骤
需要6台redis服务器。搭建伪分布式。
需要6个redis实例。
需要运行在不同的端口7001-7006
第一步:创建6个redis实例,每个实例运行在不同的端口。需要修改redis.conf配置文件。配置文件中还需要把cluster-enabled yes前的注释去掉。第二步:启动每个redis实例。(可写批处理)
第三步:使用ruby脚本搭建集群。
./redis-trib.rb create --replicas 1192.168.25.153:7001 192.168.25.153:7002 192.168.25.153:7003 192.168.25.153:7004192.168.25.153:7005 192.168.25.153:7006
1.1. 集群的使用方法
Redis-cli连接集群。
[root@localhost redis-cluster]#redis01/redis-cli -p 7002 -c
-c:代表连接的是redis集群