一、Redis单机版安装

1.官网下载源码包:https://redis.io/

cluster redis 详解 redis-cli cluster_linux

2.拷贝到linux   /usr/local

3.解压 tar -zxvf  redis-5.0.3.tar.gz  

4.编译前要确保安装了gcc :yum install gcc-c++

5.编译 ,进入redis-5.0.3文件夹 ,执行make

6.安装 ,安装到一个新文件夹redis下  : make install   PREFIX=/usr/local/redis 

7.拷贝redis-5.0.3文件夹下的redis.conf配置文件 到 /usr/local/redis/bin目录下,cp  redis.conf  /usr/local/redis/bin

8.修改redis.conf ,找到dazmonize no 修改为 dazmonize yes ,改为后台启动

9.在bin下启动   ./redis-server  redis.conf

10.启动客户端测试   ./redis-cli

11.set   a  10 ;  get a; 

cluster redis 详解 redis-cli cluster_cluster redis 详解_02

安装成功! 

 

二、Redis Cluster集群搭建

ps:5.0以下使用ruby脚本搭建,5.0以上使用redis-cli就可以创建,不需要再安装ruby环境

下面是我的安装记录:

1.搭建集群需要使用官方提供的集群管理工具redis-trib.rb ,这是一个ruby脚本,所以先要安装ruby
yum  install  ruby
yum  install  rubygems  //上面执行完后这个应该是已经安装了

2.安装ruby和redis的接口程序
gem insatll redis
报错:“redis requires Ruby version >= 2.2.2”
因为centos 安装的ruby默认为2.0,而redis需要ruby的版本在2.2.2以上

3.更新ruby更高版本

yum  remove ruby                            //先把2.0的删了

yum install centos-release-scl-rh //安装centos-release-scl-rh 

yum install rh-ruby24  -y       //直接yum安装即可 ,版本是2.4.3 

scl  enable  rh-ruby24 bash    //必要一步

ruby -v    //查看安装版本

cluster redis 详解 redis-cli cluster_集群_03

4.继续上面第二步
gem install redis

5.复制6个redis实例

cd  /usr/local

mkdir   redis-cluster

cp -r  ./redis/bin   ./redis-cluster/redis01  //复制redis文件夹下的bin 目录到redis-cluster/redis01下

cd  redis-cluster/redis01

rm -f dump.rdb          //删除之前的快照文件

vim  redis.conf  //修改配置文件

找到 port修改为 7001

找到cluster-enabled ,取消前面的注释 ,然后退出保存

cluster redis 详解 redis-cli cluster_集群_04

把redis01 复制5份,一共6个 ,01-06 

 

cluster redis 详解 redis-cli cluster_redis_05

把剩余五个的redis.conf里面的端口号分别也改成7002-7006

cp  usr/local/redis-5.0.3/src/redis-trib.rb    /usr/local/redis-cluster/    //复制rb脚本到redis-cluster

新建一个脚本 vim startall.sh 

cd redis01
./redis-server  redis.conf
cd ..
复制五次即可

执行脚本 ./startall.sh

查看是否启动 ps aux |grep redis

cluster redis 详解 redis-cli cluster_cluster redis 详解_06

./redis-trib.rb create --replicas 1 120.204.85.80:7001 120.204.85.80:7002 120.204.85.80:7003 120.204.85.80:7004 120.204.85.80:7005  120.204.85.80:7006

cluster redis 详解 redis-cli cluster_集群_07

提示不再用ruby脚本创建集群了,改成用redis-cli
因为redis5.0改版了,把创建集群的功能集成到了redis-cli里面

好吧,那么从redis01中复制一个redis-cli到redis-cluster目录下,执行:

./redis-cli --cluster create 120.77.204.80:7001 120.77.204.80:7002 120.77.204.80:7003 120.77.204.80:7004 120.77.204.80:7005 120.77.204.80:7006 --cluster-replicas 1

cluster redis 详解 redis-cli cluster_linux_08

输入yes,但是我手贱输入了y

测试集群:

./redis-cli   -h 127.0.0.1 -p 7002 -c
set  aa  10
报错:(error) CLUSTERDOWN Hash slot not served
原因是没连接上,上图中输入了y,但是要求输入yes,所以根本没连接上
然后再来一次,重新执行一遍
./redis-cli --cluster create 120.77.204.80:7001 120.77.204.80:7002 120.77.204.80:7003 120.77.204.80:7004 120.77.204.80:7005 120.77.204.80:7006 --cluster-replicas 1
输入 yes,回车

测试下:
./redis-cli  -h 127.0.0.1 -p 7001 -c  //连接
set   a  100
get   a
若能正确取值,说明集群创建成功! 

三、重启集群

有各种情况会需要重启集群

重启时,需要下面4步
1.关闭所有的服务  ./shutdown.sh
2.删除每个redis下的 aof文件和rdb文件  ./deleteCache.sh
3.重启服务    ./startall.sh
4.重新执行上面的./redis-cli --cluster create 命令,可以写成一个脚本,createCluster.sh 

再第四步 执行--cluster create 命令时,报错:
[ERR] Node 120.77.204.80:7001 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
原因需要删除每个redis文件中的rdb文件和aof文件
再次执行--cluster create 命令
这次却一直卡在Waiting for the cluster to join ......
原因是每一个redis服务都有两个端口,一个是7001,还有一个是17001,必须打开两个
所以确保关闭防火墙,然后阿里云控制台打开端口限制
再次执行
这次不卡了,但是又报错:
[ERR] Not all 16384 slots are covered by nodes.

要修复一下,执行 ./redis-trib.rb  fix  120.77.204.80:7001 

依然报错:

/usr/bin/env: ruby: No such file or directory

不是已经安装过ruby了吗,为什么又不行了

原因是要再次执行下:scl  enable  rh-ruby24 bash

再次执行: ./redis-trib.rb  fix  120.77.204.80:7001 

还是报错:

cluster redis 详解 redis-cli cluster_cluster redis 详解_09

好吧,换成执行:./redis-cli --cluster  fix 120.77.204.80:7001
在执行一次上面4步,成功!

shutdown.h:

redis01/redis-cli -p 7001 shutdown
 redis02/redis-cli -p 7002 shutdown
 redis03/redis-cli -p 7003 shutdown
 redis04/redis-cli -p 7004 shutdown
 redis05/redis-cli -p 7005 shutdown
 redis06/redis-cli -p 7006 shutdown

deleteCache.sh:

cd redis01
 rm -f  *.aof
 rm -f  *.rdb
 cd .. 
 复制5次...

 

四、redis常用命令

1、启动redis:    ./redis-server redis-conf
2、关闭redis单机版:    ./redis-cli shutdown
      集群关闭:   ./redis-cli -p 7001 shutdown

3.查看所有key :keys   *