요즘 웬만한 곳에서 Redis 를 상당히 많이 사용합니다. 그 필요성과 성능에 대해서는 많은 자료가 있으므로 설명은 생략하도록 하겠습니다. 단지 간단하게 설치 방법과 사용법. 그리고 가장 중요한 서버 구성에 대해서 알아보도록 하겠습니다.


아마 많은 분들이 헤매는 곳도 이 서버 구성(replication & cluster) 가 아닐까 생각됩니다. 저 역시도 이 부분에 대해서 많은 고민과 해결방법을 찾는데 많은 시간을 투자했기 때문이죠.



Redis 의 설치


모든 포스팅은 Linux(CentOS) 를 기반으로 설명 드리도록 하겠습니다.




기본적인 Install




가장 먼저 http://redis.io/download 에 들어가서 redis 를 받아야 겠지요. 언제나 최신버전을 사용하시는게 좋습니다. :)



저는 현재 최신버전인 3.0.1 을 다운받도록 하겠습니다.



[und3r@sungwook redis]$ wget http://download.redis.io/releases/redis-3.0.1.tar.gz

--2015-05-27 16:01:34--  http://download.redis.io/releases/redis-3.0.1.tar.gz

Resolving download.redis.io... 109.74.203.151

Connecting to download.redis.io|109.74.203.151|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 1358190 (1.3M) [application/x-gzip]

Saving to: “redis-3.0.1.tar.gz”


100%[======================================================================>] 1,358,190    498K/s   in 2.7s


2015-05-27 16:01:38 (498 KB/s) - “redis-3.0.1.tar.gz” saved [1358190/1358190]


[und3r@sungwook redis]$

[und3r@sungwook redis]$ tar xzf redis-3.0.1.tar.gz

[und3r@sungwook redis]$ cd redis-3.0.1

[und3r@sungwook redis-3.0.1]$ sudo make

[und3r@sungwook redis-3.0.1]$ sudo make install



별도 설정없이 기본적인 설치가 끝나면, 파일들이 설치가 됩니다. 서버를 실행하기 전에 먼저 설정을 하도록 합시다. 아시다시피 Redis 는 메모리 기반이기 때문에 최대 사용가능 메모리를 얼마나 할 것인지, 포트번호, 로그위치 등등 설정해 줄 것들이 있습니다. 나중에 하면 귀찮으니까, 미리 합시다.


현재 위치에 보면 utils 라는 디렉토리가 있습니다. 그 안에 install_server.sh 를 실행해 줍니다.



[und3r@sungwook utils]$ sudo ./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]

Selected default - /etc/redis/6379.conf

Please select the redis log file name [/var/log/redis_6379.log]

Selected default - /var/log/redis_6379.log

Please select the data directory for this instance [/var/lib/redis/6379]

Selected default - /var/lib/redis/6379

Please select the redis executable path [] /usr/local/bin/redis-server

Selected config:

Port           : 6379

Config file    : /etc/redis/6379.conf

Log file       : /var/log/redis_6379.log

Data dir       : /var/lib/redis/6379

Executable     : /usr/local/bin/redis-server

Cli Executable : /usr/local/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!

[und3r@sungwook utils]$


그냥 열심히 Enter 를 눌러주면 됩니다. 중간에 저의 경우 뻘짓을 좀 해서 직접 redis executable 을 타이핑 해 주었습니다.

이제 프로세스를 확인해 봅시다.



[und3r@sungwook utils]$ ps aux | grep redis

root     15111  0.1  0.1 137436  2056 ?        Ssl  16:23   0:00 /usr/local/bin/redis-server *:6379 


잘 실행되고 있네요. install_server.sh 는 내부적으로 데몬을 이용해서 redis-server 를 실행합니다. 그냥 redis-server 를 실행하면 아래처럼 됩니다.



drwxr-xr-x.  2 root root    4096 May 27 16:09 ./

drwxr-xr-x. 12 root root    4096 Mar  7 18:29 ../

-rwxr-xr-x.  1 root root 4587070 May 27 16:09 redis-benchmark*

-rwxr-xr-x.  1 root root   22185 May 27 16:09 redis-check-aof*

-rwxr-xr-x.  1 root root   45403 May 27 16:09 redis-check-dump*

-rwxr-xr-x.  1 root root 4689977 May 27 16:09 redis-cli*

lrwxrwxrwx.  1 root root      12 May 27 16:09 redis-sentinel -> redis-server*

-rwxr-xr-x.  1 root root 6448297 May 27 16:09 redis-server*

[und3r@sungwook bin]$ sudo redis-server

15008:C 27 May 16:11:07.473 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf

15008:M 27 May 16:11:07.477 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.

15008:M 27 May 16:11:07.477 # Redis can't set maximum open files to 10032 because of OS error: Operation not permitted.

15008:M 27 May 16:11:07.477 # Current maximum open files is 4096. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase 'ulimit -n'.

                _._

           _.-``__ ''-._

      _.-``    `.  `_.  ''-._           Redis 3.0.1 (00000000/0) 64 bit

  .-`` .-```.  ```\/    _.,_ ''-._

 (    '      ,       .-`  | `,    )     Running in standalone mode

 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379

 |    `-._   `._    /     _.-'    |     PID: 15008

  `-._    `-._  `-./  _.-'    _.-'

 |`-._`-._    `-.__.-'    _.-'_.-'|

 |    `-._`-._        _.-'_.-'    |           http://redis.io

  `-._    `-._`-.__.-'_.-'    _.-'

 |`-._`-._    `-.__.-'    _.-'_.-'|

 |    `-._`-._        _.-'_.-'    |

  `-._    `-._`-.__.-'_.-'    _.-'

      `-._    `-.__.-'    _.-'

          `-._        _.-'

              `-.__.-'


15008:M 27 May 16:11:07.482 # Server started, Redis version 3.0.1

15008:M 27 May 16:11:07.484 # 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.

15008:M 27 May 16:11:07.485 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.

15008:M 27 May 16:11:07.485 * The server is now ready to accept connections on port 6379



이후 데몬을 통해서 서버를 on / off 할때는 아래처럼 하시면 됩니다.



[und3r@sungwook utils]$ sudo /etc/init.d/redis_6379 start

Starting Redis server...

[und3r@sungwook utils]$ sudo /etc/init.d/redis_6379 stop

Stopping ...

Redis stopped

[und3r@sungwook utils]$






비밀번호 설정



기본 config 파일은 /etc/redis/6379.conf 형태로 저장됩니다. 해당 파일 수정 후 서버를 재시작 해 주면 됩니다. 비밀번호는 requirepass 부분을 수정해 주시면 됩니다.





간단한 사용



설치가 제대로 되었는지 확인해 봅시다. 기본적으로 설치하고 나면 /usr/local/bin 에 실행 파일들이 있으므로, pwd 상관없이 실행하시면 됩니다.



[und3r@sungwook utils]$ redis-cli

127.0.0.1:6379> set myKey myValue

OK

127.0.0.1:6379> get myKey

"myValue"

127.0.0.1:6379>






다음 포스팅에서는 replication 과 cluster 구성에 대해서 알아보겠습니다.



'Database > Redis' 카테고리의 다른 글

Redis 4부 - HAProxy  (6) 2015.05.29
Redis 3부 - Sentinel  (9) 2015.05.29
Redis 2부 - Replication  (4) 2015.05.27