Redis 소개
redis
는 메모리 기반의 key/value Store로 Cassandra나 mongodb등과 같은 NoSQL 의 한 종류 이다. 자세한 설명은 http://redis.io/ 에서 확인 할 수 있다.
다운로드
wget http://download.redis.io/releases/redis-3.0.5.tar.gz
의존성 패키지 설치
본 문서는 Centos6을 기준으로 한다.
설치에 필요한 패키지들을 설치 한다. OS환경에 따라 추가적으로 설치해야 할 패키지들이 있을 수 있으니 참고 하도록 한다.
yum -y install gcc gcc-c++ openssl-devel make jemalloc tcl tcl-devel
설치
make
make install PREFIX=/usr/local/redis
여기까지 하면 설치가 완료 된다.
설정
설정은 소스디렉토리 내 utils/install_server.sh 을 실행하여 각 설정들을 잡아준다.
cd utils
./install_server.sh
./install_server.sh
Welcome to the redis service installer
This script will help you easily set up a running redis server
Please select the redis port for this instance: [6379]
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf] /usr/local/redis/etc/redis.conf
Please select the redis log file name [/var/log/redis_6379.log] /usr/local/redis/log/redis.log
Please select the data directory for this instance [/var/lib/redis/6379] /usr/local/redis/data
Please select the redis executable path [] /usr/local/redis/bin/redis-server
Selected config:
Port : 6379
Config file : /usr/local/redis/etc/redis.conf
Log file : /usr/local/redis/log/redis.log
Data dir : /usr/local/redis/data
Executable : /usr/local/redis/bin/redis-server
Cli Executable : /usr/local/redis/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort.
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...
Installation successful!
설치 후 작업
설치 후 서버를 띄우면 로그상에 몇 가지 경고 메시지가 발생한다. 그것들을 없애기 위해 다음과 같은 작업을 한다.
다음과 같은 경고 메시지는 메시지 상에 나와있는데로 /etc/sysctl.conf
에 vm.overcommit_memory = 1
추가해준다.
1600:M 25 Nov 14:26:00.243 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory =
1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
- 작업
vi /etc/sysctl.conf
vm.overcommit_memory = 1 # 추가
sysctl -p
다음 경고메시지도 역시 메시지 상에 나온데로 echo never > /sys/kernel/mm/transparent_hugepage/enabled
를 실행해 준다. 재 시작시 적용 가능하게 /etc/rc.local
에 추가해 준다.
1600:M 25 Nov 14:26:00.243 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis
. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the settin
g after a reboot. Redis must be restarted after THP is disabled.
- 작업
vi /etc/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/enabled # 추가
이 메시지는 /etc/sysctl.conf
에 net.core.somaxconn=65535
추가 해 준다.
1600:M 25 Nov 14:26:00.242 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is se
t to the lower value of 128.
- 작업
vi /etc/sysctl.conf
net.core.somaxconn=65535 # 추가
sysctl -p