一、环境配置
1:任何位置创建文件夹
mkdir redis;cd redis;mkdir conf;cd conf
#下载安装安装包
wget http://www.redis.cn/download.html/redis-5.0.3.tar.gz
2:书写自动安装redis的脚本和自动安装主从
cd ..
vim install.sh
3:在conf目录中再编写启动脚本redis
cd conf;vim redis
#!/bin/bash
cd /usr/local/redis/bin
case $1 in
start)
./redis-server redis.conf | grep "is starting" > /dev/null && echo "redis Successful opening" || echo "redis Open failure"
;;
stop)
./redis-cli shutdown;ps -ef | grep -v grep | grep redis-server && echo "redis Shutdown failure" || echo "redis Shut down successfully"
;;
restart)
./redis-cli shutdown;ps -ef | grep -v grep | grep redis-server && echo "redis Shutdown failure" || echo "redis Shut down successfully"
./redis-server redis.conf | grep "is starting" > /dev/null && echo "redis Successful opening" || echo "redis Open failure"
;;
*)
exit
exit
;;
esac
#!/bin/bash
redis-install(){
yum install gcc-c++ wget vim -y
cd conf
#启动和关闭脚本
chmod +x redis
cp redis /usr/bin/
tar -zxf redis-5.0.3.tar.gz
cd redis-5.0.3
make MALLOC=libc
make
cd src
make install PREFIX=/usr/local/redis
cd ..
cp redis.conf /usr/local/redis/bin/
cd ..
rm -rf redis-5.0.3/
cd /usr/local/redis/bin
##让redis可以后台启动
AA=`cat -n redis.conf | grep daemonize | grep -v "#" | awk '{print $1}'`
sed -i ''"$AA"'c daemonize yes' redis.conf
#开机自启:
echo "/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis-conf" >> /etc/rc.local
#创建登录数据库的命令
cp /usr/local/redis/bin/redis-cli /usr/bin/
clear
echo "启动 redis start "
echo "关闭 redis stop "
echo "重启 redis restart"
}
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~主从搭建~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#注意事项:
# 1:主从模式时matser节点开启持久化(不开的话,matser节点重启,从会出现丢失数据)
# 2:先开启主机上的服务,后开机从机上的服务
# 3:默认是开启保护模式protected-mode yes(cat -n /usr/local/redis/bin/redis.conf | grep protected-mode)
# 生效条件:bind被注释掉和没有配置访问密码的时候才生效
# 4:dir:指定rdb文件路径(在一台服务器上启动多个Redis服务时,注意修改为不同文件路径)
# 5:从服务默认为只读模式 replica-read-only yes
master(){
#主库操作:
read -p "请输入本机内网ip:" IP
clear
read -p "请设置redis密码:" Pass1
clear
read -p "请设置redis主从连接密码:" PAss1
#redis只接收来自该IP的请求(这里没有设置,就接收所有请求)
AA=`cat -n /usr/local/redis/bin/redis.conf | grep 127.0.0.1 | grep -v "#" | awk '{print $1}'`
sed -i ''"$AA"'c bind '"$IP"'' /usr/local/redis/bin/redis.conf
#配置监听端口(默认6379)
BB=`cat -n /usr/local/redis/bin/redis.conf | grep port | grep -v "#" | awk '{print $1}'`
sed -i ''"$BB"'c port 6379' /usr/local/redis/bin/redis.conf
#配置log文件地址logfile:
CC=`cat -n /usr/local/redis/bin/redis.conf | grep logfile | grep -v "#" | awk '{print $1}'`
sed -i ''"$CC"'c logfile "6379.log"' /usr/local/redis/bin/redis.conf
#配置镜像备份的名称(dbfilename:镜像备份文件的文件名)
DD=`cat -n /usr/local/redis/bin/redis.conf | grep dbfilename | grep -v "#" | awk '{print $1}'`
sed -i ''"$DD"'c dbfilename "dump-6379.rdb"' /usr/local/redis/bin/redis.conf
#启动压缩(rdbcompression:在进行镜像备份时,是否进行压缩)
EE=`cat -n /usr/local/redis/bin/redis.conf | grep rdbcompression | grep -v "#" | awk '{print $1}'`
sed -i ''"$EE"'c rdbcompression yes' /usr/local/redis/bin/redis.conf
##设置主从连接的密码
FF=`cat -n /usr/local/redis/bin/redis.conf | grep masterauth | awk '{print $1}'`
sed -i ''"$FF"'c masterauth '"$PAss1"'' /usr/local/redis/bin/redis.conf
#设置redis的密码
GG=`cat -n /usr/local/redis/bin/redis.conf | grep requirepass | grep -v I | awk '{print $1}'`
sed -i ''"$GG"'c requirepass '"$Pass1"'' /usr/local/redis/bin/redis.conf
#设置最大连接数(最大支持10000个)
HH=`cat -n /usr/local/redis/bin/redis.conf | grep maxclients | awk '{print $1}'`
sed -i ''"$HH"'c maxclients 10000' /usr/local/redis/bin/redis.conf
clear
echo "本机redis密码: ${Pass1}"
echo "已设置redis主从连接密码: ${PAss1}"
echo "请先启动主,再启动从!!"
echo "再验证主从: redis-cli -h $IP -p 6379 -a redis密码"
echo "进入数据库再使用:info replication"
}
slave(){
#从库操作:
read -p "请输入本机内网ip:" IPP
clear
read -p "请设置redis密码:" Pass
clear
read -p "请输入redis主的ip地址:" IIPP
clear
read -p "请输入redis主的port :" Port
clear
read -p "请输入redis主从连接密码:" PAss
#redis只接收来自该IP的请求(这里没有设置,就接收所有请求)
AAA=`cat -n /usr/local/redis/bin/redis.conf | grep 127.0.0.1 | grep -v "#" | awk '{print $1}'`
sed -i ''"$AAA"'c bind '"$IPP"'' /usr/local/redis/bin/redis.conf
#配置监听端口(默认6379)
BBB=`cat -n /usr/local/redis/bin/redis.conf | grep port | grep -v "#" | awk '{print $1}'`
sed -i ''"$BBB"'c port 6380' /usr/local/redis/bin/redis.conf
#配置log文件地址logfile:
CCC=`cat -n /usr/local/redis/bin/redis.conf | grep logfile | grep -v "#" | awk '{print $1}'`
sed -i ''"$CCC"'c logfile "6380.log"' /usr/local/redis/bin/redis.conf
#配置镜像备份的名称(dbfilename:镜像备份文件的文件名)
DDD=`cat -n /usr/local/redis/bin/redis.conf | grep dbfilename | grep -v "#" | awk '{print $1}'`
sed -i ''"$DDD"'c dbfilename "dump-6380.rdb"' /usr/local/redis/bin/redis.conf
#启动压缩(rdbcompression:在进行镜像备份时,是否进行压缩)
EEE=`cat -n /usr/local/redis/bin/redis.conf | grep rdbcompression | grep -v "#" | awk '{print $1}'`
sed -i ''"$EEE"'c rdbcompression yes' /usr/local/redis/bin/redis.conf
#配置主的ip和端口以及主从连接密码
FFF=`cat -n /usr/local/redis/bin/redis.conf | grep replicaof | grep -v M | awk '{print $1}'`
sed -i ''"$FFF"'c replicaof '"$IIPP"' '"$Port"'' /usr/local/redis/bin/redis.conf
FFF2=`cat -n /usr/local/redis/bin/redis.conf | grep masterauth | awk '{print $1}'`
sed -i ''"$FFF2"'c masterauth '"$PAss"'' /usr/local/redis/bin/redis.conf
#设置redis密码
GGG=`cat -n /usr/local/redis/bin/redis.conf | grep requirepass | grep -v I | awk '{print $1}'`
sed -i ''"$GGG"'c requirepass '"$Pass"'' /usr/local/redis/bin/redis.conf
#设置最大连接数(最大支持10000个)
HHH=`cat -n /usr/local/redis/bin/redis.conf | grep maxclients | awk '{print $1}'`
sed -i ''"$HHH"'c maxclients 10000' /usr/local/redis/bin/redis.conf
clear
echo "本机redis密码: ${Pass}"
echo "请先启动主,再启动从!!"
echo "再验证主从: redis-cli -h $IPP -p 6380 -a redis密码"
echo "进入数据库再使用:info replication"
}
muan(){
echo "1:安装redis "
echo "2:安装redis主 "
echo "3:安装redis从 "
}
muan
read -p "请输入选择:" XZ
case $XZ in
1)
exit;;
2)
master;;
3)
slave;;
*)
exit
exit;;
esac