下载并解压 redis
[root@instance-5prxhubg ~]# http://download.redis.io/releases/redis-5.0.3.tar.gz
[root@instance-5prxhubg ~]# tar xzf redis-5.0.3.tar.gz
[root@instance-5prxhubg ~]# cd redis-5.0.3
安装 redis 到 /usr/local/redis
[root@instance-5prxhubg redis-5.0.3]# make PREFIX=/usr/local/redis install
注:如果出现错误
1、没有安装gcc,这会导致我们无法make成功。使用yum安装:
yum -y install gcc
2、jemalloc重载了Linux下的ANSI C的malloc和free函数。解决办法:make时添加参数。
make MALLOC=libc
[root@instance-5prxhubg redis-5.0.3]# ls /usr/local/redis
bin
[root@instance-5prxhubg redis-5.0.3]# ls /usr/local/redis/bin
redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server
[root@instance-5prxhubg redis-5.0.3]#
启动redis
[root@instance-5prxhubg redis-5.0.3]# /usr/local/redis/bin/redis-server
79963:C 19 Jan 2019 22:18:59.300 # Warning: no config file specified, using the default config. In order to specify a config file use /usr/local/redis/bin/redis-server /path/to/redis.conf
_._
_.-``__ ''-._
_.-`` `. `_. ''-._
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, )
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 79963
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
这样启动的 redis 是默认形式,只能在前台运行,关闭命令窗口就会结束 redis。
现在需要把 redis 改成可以在后台运进
复制一份redis 配置文件 redis.conf 到 /usr/local/redis/bin/
[root@instance-5prxhubg redis-5.0.3]# ls
00-RELEASENOTES CONTRIBUTING deps Makefile README.md runtest runtest-sentinel src utils
BUGS COPYING INSTALL MANIFESTO redis.conf runtest-cluster sentinel.conf tests
[root@instance-5prxhubg redis-5.0.3]#
[root@instance-5prxhubg redis-5.0.3]# cp redis.conf /usr/local/redis/bin/
修改 redis 配置文件
[root@instance-5prxhubg redis-5.0.3]# cd /usr/local/redis/bin/
[root@instance-5prxhubg bin]# vim redis.conf
查找daemonize no 改为以守护进程方式运行 daemonize yes
启动 redis 指定配置文件
[root@instance-5prxhubg bin]# ls
redis-benchmark redis-check-aof redis-check-rdb redis-cli redis.conf redis-sentinel redis-server
[root@instance-5prxhubg bin]# ./redis-server redis.conf
94640:C 19 Jan 2019 22:29:29.630 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
94640:C 19 Jan 2019 22:29:29.630 # Redis version=5.0.3, bits=64, commit=00000000, modified=0, pid=94640, just started
94640:C 19 Jan 2019 22:29:29.630 # Configuration loaded
测试
[root@instance-5prxhubg bin]# ./redis-cli
127.0.0.1:6379> set name xiaohong
OK
127.0.0.1:6379> get name
"xiaohong"
127.0.0.1:6379> exit
[root@instance-5prxhubg bin]#
如果需要可以配置 redis 开机自启
配置 redis 开机自启
将redis_init_script拷贝到/etc/init.d目录下并重命名为 redis
[root@instance-5prxhubg ~]# cp redis-5.0.3/utils/redis_init_script /etc/init.d/redis
[root@instance-5prxhubg ~]# cd /etc/init.d
[root@instance-5prxhubg init.d]# ls
bcm-agent functions hosteye mysqld netconsole network README redis
查看一下 redis 这个文件
[root@instance-5prxhubg init.d]# cat redis
#!/bin/sh
REDISPORT=6379
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli
PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.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 -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
这个 shell 脚本中这五个参数十分重要
REDISPORT=6379 //redis的端口号
EXEC=/usr/local/bin/redis-server //redis服务位置
CLIEXEC=/usr/local/bin/redis-cli //redis 客户位置
PIDFILE=/var/run/redis_${REDISPORT}.pid //这个文件是 redis 启动后自动生成的,可用于检测 redis 是否启动。不能修改
CONF="/etc/redis/${REDISPORT}.conf" //redis 配置文件位置
对比我的配置可以看出 EXEC、CLIEXEC 和 CONF 这三个参数要修改:
EXEC=/usr/local/redis/bin/redis-server
CLIEXEC=/usr/local/redis/bin/redis-cli
CONF=/usr/local/redis/bin/redis.conf
vim 修改并保存
[root@instance-5prxhubg init.d]# chkconfig --add redis
[root@instance-5prxhubg init.d]# chkconfig
bcm-agent 0:关 1:关 2:开 3:开 4:开 5:开 6:关
hosteye 0:关 1:关 2:开 3:开 4:开 5:开 6:关
mysqld 0:关 1:关 2:开 3:开 4:开 5:开 6:关
netconsole 0:关 1:关 2:关 3:关 4:关 5:关 6:关
network 0:关 1:关 2:开 3:开 4:开 5:开 6:关
redis 0:关 1:关 2:开 3:开 4:开 5:开 6:关
重启 Linux
[root@instance-5prxhubg init.d]# reboot
查看 redis-server 进程是否存在
[root@instance-5prxhubg ~]# ps -ef | grep redis
root 1068 1 0 15:42 ? 00:00:01 /usr/local/redis/bin/redis-server 127.0.0.1:6379
root 6770 6485 0 15:58 pts/0 00:00:00 grep --color=auto redis
关闭 redis 服务
[root@instance-5prxhubg ~]# service redis stop
Stopping ...
Redis stopped
[root@instance-5prxhubg ~]# ps -ef | grep redis
root 10114 6485 0 16:01 pts/0 00:00:00 grep --color=auto redis
[root@instance-5prxhubg ~]#