centos7下redis-6.0.5安装
1、下载安装包
进入官网(https://redis.io/download)下载指定版本的安装包,这里下载的是最新的redis-6.0.5.tar.gz:
2、解压压缩文件
tar -zxvf redis-6.0.5.tar.gz
cd redis-6.0.5/
3、编译安装redis
在编译安装前,查看系统gcc环境的版本(gcc -v),centos7默认安装的版本为4.8.5,该版本过低会无法进行安装,需要升级gcc到6以上。
sudo yum -y install centos-release-scl
sudo yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
sudo scl enable devtoolset-9 bash
sudo echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile
gcc -v
gcc依赖安装完成后,进入redis解压目录进行安装:
sudo make && sudo make install PREFIX=/usr/local/redis-6.0.5
cd src && make install
进入安装目录,启动服务查看redis是否安装成功:
cd /usr/local/redis-6.0.5/bin/
./redis-server
4、调整配置
更改redis一些必要的配置,首先将解压目录下的redis.conf文件拷贝到安装目录下:
sudo cp /java/soft/redis-6.0.5/redis.conf /usr/local/redis-6.0.5/
修改其中的一些必要配置:
daemonize no --> yes 让redis启动的时候以后台服务的形式
requirepass foobared --> 设置redis的连接密码
port 6379 --> redis的启动端口,默认为6379
cd ..
./bin/redis-server redis.conf
ps -ef|grep redis
5、设置服务
将redis做成服务,并设置成开机启动:
sudo vim /etc/systemd/system/redis.service
[Unit]
Description=redis-server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/redis-6.0.5/bin/redis-server /usr/local/redis-6.0.5/redis.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start redis.service
ps -ef|grep redis
sudo systemctl enable redis.service
添加环境变量,让可以在任意地方使用redis命令:
sudo vim /etc/profile
# redis
PATH=$PATH:/usr/local/redis-6.0.5/bin
export PATH
source /etc/profile
6、创建集群目录
创建redis集群至少需要3个节点,而每个节点至少有一个备份节点,所以至少需要创建6个节点。在安装目录下创建6个目录7000,7001,7002,7003,7004,7005,然后将redis.conf文件复制到7000目录下,并修改:
sudo mkdir redis-cluster
sudo mkdir -p redis-cluster/7000
sudo mkdir -p redis-cluster/7001
sudo mkdir -p redis-cluster/7002
sudo mkdir -p redis-cluster/7003
sudo mkdir -p redis-cluster/7004
sudo mkdir -p redis-cluster/7005
sudo cp redis.conf redis-cluster/7000/
sudo vim redis-cluster/7000/redis.conf
将redis.conf中的配置按照以下进行调整:
#后台启动
daemonize yes
pidfile /usr/local/redis-6.0.5/redis-cluster/redis_7000.pid
# 和文件夹对应的端口号
port 7000
# 注释去掉
cluster-enabled yes
# 注释去掉,并将名称后面改成对应端口号
cluster-config-file nodes-7000.conf
# 节点通讯时间
cluster-node-timeout 15000
# 持久化方式
appendonly yes
# 集群密码,自行进行调整
requirepass 12345616 # redis集群数据库和日志存储目录17 dir /usr/local/redis-6.0.5/redis-cluster/
将7000下的redis.conf分别拷贝到其他几个目录下,并将配置文件里面的对应端口号改成文件夹的端口号
7、redis集群脚本
redis集群需要启动的比较多,为了方便,建立一个脚本自动启动和关闭redis集群,并设置开机启动:
sudo vim /etc/init.d/redisc
然后将下面的内容拷贝到文件中:
#!/bin/sh
# chkconfig: 2345 80 90
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
REDISPORT1=7001
REDISPORT2=7002
REDISPORT3=7003
REDISPORT4=7004
REDISPORT5=7005
REDISPORT6=7000
PASSWD=123456
EXEC=/usr/local/redis-6.0.5/bin/redis-server
CLIEXEC=/usr/local/redis-6.0.5/bin/redis-cli
PIDFILE=/usr/local/redis-6.0.5/redis-cluster/redis_${REDISPORT1}.pid
CONF1="/usr/local/redis-6.0.5/redis-cluster/${REDISPORT1}/redis.conf"
CONF2="/usr/local/redis-6.0.5/redis-cluster/${REDISPORT2}/redis.conf"
CONF3="/usr/local/redis-6.0.5/redis-cluster/${REDISPORT3}/redis.conf"
CONF4="/usr/local/redis-6.0.5/redis-cluster/${REDISPORT4}/redis.conf"
CONF5="/usr/local/redis-6.0.5/redis-cluster/${REDISPORT5}/redis.conf"
CONF6="/usr/local/redis-6.0.5/redis-cluster/${REDISPORT6}/redis.conf"
case "$1" in
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed"
else
echo "Starting Redis cluster server..."
$EXEC $CONF1 &
$EXEC $CONF2 &
$EXEC $CONF3 &
$EXEC $CONF4 &
$EXEC $CONF5 &
$EXEC $CONF6 &
echo "启动成功..."
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
$CLIEXEC -p $REDISPORT1 -a $PASSWD shutdown
$CLIEXEC -p $REDISPORT2 -a $PASSWD shutdown
$CLIEXEC -p $REDISPORT3 -a $PASSWD shutdown
$CLIEXEC -p $REDISPORT4 -a $PASSWD shutdown
$CLIEXEC -p $REDISPORT5 -a $PASSWD shutdown
$CLIEXEC -p $REDISPORT6 -a $PASSWD shutdown
while [ -x /proc/${PID} ]
do
echo "Waiting for Redis cluster to shutdown ..."
sleep 1
done
echo "Redis cluster stopped"
fi
;;
*)
echo "Please use start or stop as first argument"
;;
esac
注册成系统服务并开机启动:
sudo chkconfig --add redisc
sudo chkconfig redisc on
sudo chmod a+x /etc/init.d/redisc
redis服务命令:
启动:sudo service redisc start
关闭:sudo service redisc stop
8、创建集群
直接使用redis-cli命令进行创建:
sudo ./bin/redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 -a [password] --cluster-replicas 1
中途输入yes
说明:1、如果没有设置密码。则不需要添加-a [password]
2、如果是在不同服务器之间开启集群,则需要使用ip地址进行集群创建,而不是127.0.0.1,同样的,对应的redis.conf中的bind ip也需要换成对应的ip地址
3、集群防火墙的开通除了需要开通上面的端口外,还需要开通集群总线的端口,集群总线端口为配置端口+10000。如果没有开通集群总线端口,在创建集群时,会一直Waiting for the cluster to join。
4、低版本redis下,创建集群需要使用redis-trib.rb工具,如果redis-cli没有该命令,请使用redis-trib工具进行创建