티스토리 뷰

Redis(http://redis.io)

오랜만에 기술포스팅을 올립니다. ^^)/ 
수준은 Redis를 처음접하는 개발자분들에게 맞추어 작성했습니다. 

Redis는 뛰어난 메모리 기반의 Key-Value 저장소로 빠른 속도와 다양한 API 그리고 스냅샷 기능을 지원해 디스크에 저장할 수 있으며, Publish와 Subscribe 개념으로 메시지 전달도 가능합니다. 물론 Replication도 지원합니다. 이처럼 여러 방면에서 기존의 메모리기반 저장소의 단점을 보완한 데이터 저장소라 할 수 있을 것 같습니다. 조만간 클러스터링 기능까지 지원하게 될텐데요, 개인적으론 메모리 기반 DB로는 최고의 자리에 우뚝서게 되지 않을까 기대해 볼만한 솔루션이라 생각하고 있습니다. 


Redis에 대한 자세한 내용은 http://redis.io/페이지를 참고해 주기 바랍니다. 


CentOS기반에서 Redis를 설치 및 실행하고 다루는 방법에 대해 알아보겠습니다.


1. http://redis.io/download 페이지에서 redis 최신 바이너리 파일을 다운로드 받아 설치합니다. 

   (참고로 현재는 2.4.17버전이 최신이네요..)


$ cd /usr/local/src 

$ wget http://redis.googlecode.com/files/redis-2.4.17.tar.gz

$ tar xvfz redis-2.4.17.tar.gz

$ cd redis-2.4.17

$ make -j4 && make install  -j4



2. Redis 컴파일이 완료되었다면, install script를 이용해 설치를 완료합니다. 

    Install 스크립트는 컴파일된 디렉토리의 utils 디렉토리에 존재합니다.


$ cd utils

$ ./install_server.sh


3. 이제 설치가 진행됩니다.



첫번째 설정은 redis를 몇 번 포트를 사용할 것인지 지정하는 것으로 기본은 6379포트 입니다.

두번째는 redis의 환경설정 파일인 conf파일의 위치를 지정하는 것이고, 그 다음은 로그 파일의 위치를 지정합니다. 

끝으로 실행 스크립트를 지정할 위치를 설정하면 설치를 모두 끝나게 됩니다.


4. 잘 설치되었는지 확인해 볼까요?

콘솔에서 Redis 클라이언트를 실행합니다. 실행방법은 redis-cli 를 입력하면 됩니다. 클라이언트가 실행되면 ping을 입력합니다. 그러면 서버에서 PONG을 반환하게 될 것입니다.


$ redis-cli

redis 127.0.0.1:6379> ping

PONG

redis 127.0.0.1:6379>



5. Redis 서버는 기본적으로 비밀번호로 잠겨있지 않기 때문에 별도의 설정이 필요합니다.


$ vi /etc/redis/6379.conf


편집기로 환경설정 파일을 수정합니다. (앞에서 install 스크립트를 실행할 때, /etc/redis/디렉토리에 위치하게 됨.)

설정파일에서 requirepass 라고 설정된 부분을 찾아 주석을 지우고 접속 비밀번호를 설정합니다.



비밀번호 설정이 완료되었다면, Redis 서버를 재시작합니다.

$ /etc/init.d/redis_6379 stop 

$ /etc/init.d/redis_6379 start 


자 이제 redis 클라이언트를 앞에서 실행한 바와 같이 실행해 봅니다.


redis.io 사이트에서 명령어 (Command)부분을 보고 하나씩 실행해보면서 Redis에 대해 살펴보면 되겠습니다~


[덧글]


Redis를 접하게 되면, 라이브러리를 많이 이용하실겁니다.. 그런데 PHP로 서비스를 하고 있는 업체에 외부 기술지원을 하는데.. 제가 찾지 못한 것일지도 모르지만.. PHP쪽은 많이 허술하거나, 너무 방대한 라이브러리들 뿐이더라고요.. 

그래서 그날 간단하게 나마 만들어 본 PHP용 라이브러리가 있는데, 공유해 봅니다.


[Redis.php 다운로드 페이지]

http://dev.naver.com/projects/redis-php/download



사용법은 간단합니다.


Redis.php를 include하고, Redis의 command를 작성 하듯이 적용하면 됩니다. 

가령 랭킹을 구현할 때 많이 쓰이는 ZADD명령어를 사용하는 것을 예로 들자면..


<?php
require_once("Redis.php");
//Redis 서버 연결(호스트 IP, PORT, [접속비밀번호])

//접속비밀번호가 없을 경우는 생략 $r = new Redis("127.0.0.1", 6379, "passwd"); $r->execute("zadd", "rank_class", 100, "lovedev"); $r->execute("zadd", "rank_class", 101, "kim"); $result = $r->execute("zrange", "rank_class", 0, -1); $r->execute("ping"); $r->execute("sadd", "test", "hello"); //anything what you want command ~~~ blah~~blah~~ //must close connection(잊지 마세요~) $r->close(); ?>


저작자 표시 비영리 동일 조건 변경 허락
신고
댓글
댓글쓰기 폼