快速跑起来#
- 官网下载源码包
- 解压安装:
tar zxvf redis-3.2.8.tar.gz
- 进入目录:
cd redis-3.2.8/
- 编译:
make
编译完成后, 最重要的两个文件是: src目录里面的redis-server redis-cli
两个文件, 把这个文件拷贝到PATH中即可运行. - 简陋地运行一下:
src/redis-server redis.conf
命令后指定配置文件即可跑起来
更好的封装#
参照Nginx的形式, 做了如下的处理:
- 创建主目录:
sudo mkdir /usr/local/redis
- 主目录内的目录结构:
- bin - 主要存放
redis-server redis-cli
两个可执行文件, 把这个目录放到PATH中即可(我是图方便直接修改了/etc/profile
文件) 按照标准, 应该区分sbin和bin目录, 就不再找麻烦了吧 - conf - 主要存放配置文件(复制、修改自源码目录下的
redis.conf
这个文件)
按照需要修改端口号,监听地址(0.0.0.0),logfile路径,pidfile路径,daemonize yes
,dir /usr/local/redis/
,dbfilename dump.rdb
等 - logs - 把日志输出到这里(
logs/redis.log
) - redis.pid(文件 - 保存redis的pid)
- dump.rdb(文件 - 保存redis数据)
- 作为服务启动:
复制如下内容到/etc/init.d/redis
, 里面的前两行注释是给chkconfig使用的, 之后的启动命令就是以www用户启动服务(sudo -u www $EXEC $CONF
)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49chkconfig: 2345 90 10
description: Redis is a persistent key-value database
PATH=/usr/local/bin:/sbin:/usr/bin:/bin
REDISPORT=6378
EXEC=/usr/local/redis/bin/redis-server
REDIS_CLI=/usr/local/redis/bin/redis-cli
PIDFILE=/usr/local/redis/redis.pid
CONF="/usr/local/redis/conf/redis.conf"
case "$1" in
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed"
else
echo "Starting Redis server..."
sudo -u www $EXEC $CONF
fi
if [ "$?"="0" ]
then
echo "Redis is running..."
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
$REDIS_CLI -p $REDISPORT -a 123wujiecao SHUTDOWN
while [ -x ${PIDFILE} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
echo "Redis stopped"
fi
;;
restart|force-reload)
${0} stop
${0} start
;;
*)
echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2
exit 1
esac - 启停命令
service redis start
、service redis stop
- 注册为启动命令:
sudo chkconfig --add redis
检查是否成功:chkconfig --list redis
, 如果返回类似redis 0:off 1:off 2:on 3:on 4:on 5:on 6:off
的结果就说明成功了
PS: 强制关闭进程#
遇到一个颇尴尬的问题: 启动后, 由于配置文件中没有指定dir /usr/local/redis/
, 导致redis关闭的时候写文件时没有权限, 就不能完成关闭, 就怎么都不能关闭服务, 只能强制杀死进程:sudo kill -9 <pid>