Linux部署Redis
一、部署流程
这里我将端口改为6378且设置里面后面的操作都基于这个情况
1. 下载redis
下载地址
或者
所有历史版本下载地址
或者
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
2. 解压redis
注意:如果是新机器,需要先安装gcc
安装gcc: yum -y install gcc
验证gcc是否安装成功:rpm -qa|grep gcc
解压命令
tar -zvxf redis-5.0.7.tar.gz
3. 移动redis目录
mv /root/redis-5.0.7 /usr/local/redis
4. 编译
make
make PREFIX=/usr/local/redis install
5. 修改conf配置
生成log日志存放位置
mkdir log
修改配置
vi /etc/redis.conf
#查找daemonize no改为 yes以守护进程方式运行 即以后台运行方式去启动
daemonize yes
#修改dir ./为绝对路径, 默认的话redis-server启动时会在当前目录生成或读取dump.rdb
#所以如果在根目录下执行redis-server /etc/redis.conf的话,
#读取的是根目录下的dump.rdb,为了使redis-server可在任意目录下执行,所以此处将dir改为绝对路径
dir /usr/local/redis/bin
#修改appendonly为yes
#指定是否在每次更新操作后进行日志记录, Redis在默认情况下是异步的把数据写入磁盘,
#如果不开启,可能会在断电时导致一段时间内的数据丢失。
#因为redis本身同步数据文件是按上面save条件来同步的,
#所以有的数据会在一段时间内只存在于内存中。默认为no
appendonly yes
#redis 日志生成位置logfile "/usr/local/redis/log/redis.log"
关键参数:
daemonize
yes表示启用守护进程,默认是no即不以守护进程方式运行。其中Windows系统下不支持启用守护进程方式运行bind
绑定的主机地址,如果需要设置远程访问则直接将这个属性备注下或者改为bind * 即可,这个属性和下面的protected-mode控制了是否可以远程访问 。(可以注释掉)dir
指定本地数据库存放目录requirepass
设置 Redis 连接密码,如果配置了连接密码,客户端在连接 Redis 时需要通过 AUTH 命令提供密码,默认关闭
6. 启动
cd /usr/local/redis/bin
./redis-server ../redis.conf
./redis-cli
二、开机自启
1. 使用redis启动脚本设置开机自启动
为了让redis-server能在系统启动时自动运行,需要将redis服务作为守护进程(daemon)来运行,我们回到/usr/redis/目录中找到redis.conf的文件,这个文件是redis服务运行时加载的配置.
redis.conf文件内容非常长,但是大部分是注释,我们重点关注其中的几个设置daemonize
和pidfile
:
其中daemonize默认值是false,pidfile默认值是pidfile /var/run/redis_6379.pid
第一个表示是否daemon化,显然我们要把它改成daemonize yes;
第二个表示当服务以守护进程方式运行时,redis默认会把pid写入/var/run/redis_6379.pid文件,服务运行中该文件就存在,服务一旦停止该文件就自动删除,因而可以用来判断redis是否正在运行。
保存后退出。
2. 脚本
注意这里停止方法里面要写你设置的密码
下文中这段修改-a后面的密码
$CLIEXEC -a 设置的密码 -p $REDISPORT shutdown
#!/bin/sh
# 说明启动优先级
# chkconfig: 2345 90 10
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
### BEGIN INIT INFO
# Provides: redis_6378
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Redis data structure server
# Description: Redis data structure server. See https://redis.io
### END INIT INFO
#端口
REDISPORT=6378
REDIS=redis
#服务启动脚本位置
EXEC=/usr/local/redis/bin/redis-server
#客户端连接脚本位置
CLIEXEC=/usr/local/redis/bin/redis-cli
#启动PID所在位置
PIDFILE=/var/run/redis_${REDISPORT}.pid
#启动配置文件所在位置
CONF="/usr/local/redis/redis.conf"
case "$1" in
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed"
else
echo "Starting Redis server..."
$EXEC $CONF
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
$CLIEXEC -a 设置的密码 -p $REDISPORT shutdown
while [ -x /proc/${PID} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
echo "Redis stopped"
fi
;;
*)
echo "Please use start or stop as first argument"
;;
esac
3. 配置自启规则到服务器
chkconfig redis on
一切就绪之后,可以执行以下命令检验service是否设置成功:
service redis start
service redis stop