# 각자 원하는 폴더로 이동해 다운받아 설치한다.
$ cd /usr/share
$ wget http://download.redis.io/releases/redis-3.0.5.tar.gz
$ tar zxvf redis-3.0.5.tar.gz
# 설치 폴더의 이름을 변경
# 개인 취향이니 변경하지 않아도 된다.
$ mv redis-3.0.5 redis
$ cd redis
$ yum -y install gcc
##### OS 버전에 맞게 jemalloc를 설치.###
# 6.5
$ yum -y install jemalloc
# 7.0
$ yum -y install epel-release
$ yum -y install varnish
#######################################
$ yum -y install tcl
$ make
컴파일 오류 발생할 경우 누락된 패키지를 설치후 리빌드 시키면 됨
# gcc 가 없을 때 발생
make[1]: Entering directory `/usr/share/redis/src'
CC adlist.o
/bin/sh: cc: command not found
make[1]: *** [adlist.o] 오류 127
make[1]: Leaving directory `/usr/share/redis/src'
make: *** [all] 오류 2
gcc가 없는 것이니, 설치하자
$ yum -y install gcc
# jemalloc이 없을 때 발생
make[1]: Entering directory `/usr/share/redis/src'
CC adlist.o
In file included from adlist.c:34:
zmalloc.h:50:31: error: jemalloc/jemalloc.h: 그런 파일이나 디렉터리가 없습니다
zmalloc.h:55:2: error: #error "Newer version of jemalloc required"
make[1]: *** [adlist.o] 오류 1
make[1]: Leaving directory `/usr/share/redis/src'
make: *** [all] 오류 2
# 6.5
$ yum -y install jemalloc
# 7.0
$ yum -y install epel-release
$ yum -y install varnish
# tcl이 없을 때 발생
make[1]: Entering directory `/usr/share/redis/src'
You need tcl 8.5 or newer in order to run the Redis test
make[1]: *** [test] 오류 1
make[1]: Leaving directory `/usr/share/redis/src'
make: *** [test] 오류 2
tcl 설치
$ yum -y install tcl
컴파일 오류를 해결 후 리빌드 시켜보자. 모든 테스트가 ok되는 것을 볼 수 있다
리빌드 시킨다.
$ make distclean
$ make
$ make test
서버 자동 시작
vi /usr/share/redis/redis.conf 파일을 열어서 데몬으로 실행할 수 있도록 설정
daemonize yes
vi /etc/init.d/redis-server 파일을 생성하여 아래코드 복사
경로설정은 환경에 맞게 수정해야 한다.
#! /bin/sh
### BEGIN INIT INFO
# Provides: redis-server
# Description: redis-server - Persistent key-value db
# chkconfig: - 85 15
### END INIT INFO
REDISPORT=6379
EXEC=/usr/share/redis/src/redis-server
CLIEXEC="/usr/share/redis/src/redis-cli"
# exists password
if [ $2 ]
then
CLIEXEC="$CLIEXEC -a $2"
fi
PIDFILE=/var/run/redis.pid
CONF="/usr/share/redis/redis.conf"
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
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
info)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
$CLIEXEC info
fi
;;
*)
echo "Usage: start|stop|restart [password]"
;;
esac
# 서비스 등록
$ chmod +x /etc/init.d/redis-server
$ chkconfig --add redis-server
$ chkconfig --level 2345 redis-server on
$ service redis-server start [password]
테스트 해보기
$ /usr/share/redis/src/redis-cli [-h my redis-server ip] [-p my redis-server port] [-a my redis-server password]
redis> set foo bar
OK
redis> get foo
"bar"