一、Redis单机版安装
1.官网下载源码包:https://redis.io/
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;
安装成功!
二、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 //查看安装版本
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 ,取消前面的注释 ,然后退出保存
把redis01 复制5份,一共6个 ,01-06
把剩余五个的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
./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
提示不再用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
输入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
还是报错:
好吧,换成执行:./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 *