본문 바로가기

SERVER

Redis+Linux(Fedora19) 설치

Redis는 메모리 기반 데이터베이스 입니다. 

Key+value 형태로 사용되어지곤 하죠. 그리고 메모리에 올려진 데이터의 싱크를 위해 파일로도 제공합니다. NoSql DBMS로 분류되기도 하고 memcached와 같은 im memory 솔루션으로도 분류됩니다. 

그래서 여러 소셜 서비스에서 사용하고 있습니다. 


Redis가 사용하는 데이터 타입은 5가지로 분류합니다. 

1. String

일반적인 문자열이고 512mb까지 지원합니다. Text뿐 아니라 integer롸 같은 숫자나 jpeg같은 바이너리도 저장 가능합니다. 

2. Set

set은 String의 집합인데 여러개의 값을 하나의 Value에 넣을 수 있고 블로그 포스트의 태깅 등에 사용할 수 있습니다. set간 연산을 지원하는데 교집합, 합집합, 차이를 매우 빠른 시간내에 수행 할 수 있습니다. 

3. sorted Set

여기에 저장된 데이터는 오름차순으로 정렬되어 있고 정렬에 의해 조회가 가능합니다. 

4. Hashes

Hashes는 key,value로 나누어진 java의 HashMap과 유사하다고 이해하면 됩니다. 

5. List

저장되는 데이터는 set과 유사하지만 List의 전후에서 Push/pop 연산을 통해 넣거나 뺄 수 있습니다. 혹은 List의 Index 값을 통해서 추출 가능합니다. 


memcached는 장비가 죽으면 데이터가 사라지자만 Redis는 데이터가 사라지지 않습니다. 2가지의 방식으로 메모리에 있는 데이터를 Disk에 내려씁니다. 

1. snapshotting

순간적으로 메모리에 있는 내용을 디스크에 옮겨 담습니다. 

SAVE와 BGSAVE가 있는데 전자는 모든 redis의 동작을 정지시키고 그때의 스냅샵을 내려씁니다. 

후자는 별도의 프로세스를 실행시켜서 스냅샵을 저장하며 redis는 정지 하지 않습니다. 

이것의 단점은 스냅샷이 내려써진 지점까지만 복구 된다는 점이며 마지막 스냅샷 이후의 데이터를 사라지게 됩니다. 

2.AOF

write/update 연산 전체를 log 파일에 기록하며 서버가 재 시작될때 wirte/update 오퍼레이션을 순차적으로 재실행하며 데이터를 복구합니다. opertation이 발생할때 마다 매번 기록하기 때문에 항상 현재 시점까지의 데이터로 복구 가능합니다. 

이것은 데이터 유실은 발생하지 않으나 모든 write/update에 대해서 로그를 남기기 때문에 restart 속도가 느리며 용량이 비대합니다. 


1. Redis 다운로드

http://www.redis.io/download 에 접속하면 Redis를 다운로드 할 수 있습니다


가장 안정적인 버전을 3.0.2를 받아서 다운로드 합니다. 


2. 압축풀기

Redis를 다운받았습니다. Redis-3.0.2.tar.gz 라고 대충 명명되어 있겟죠

tar xvfz Redis-3.0.2.tar.gz 

명령어를 실행시켜서 압축을 풀어주세요.

이런 형태로 압축이 풀리는걸 확인할 수 있구요.

압축 풀기 위해서 위치했던 폴더에서 압축 풀린 결과물을 확인 하실 수 있습니다. 


3. 설치

압출이 풀린 폴더로 이동해서 make 명령어를 통해서 설치를 실행합니다. 


설치가 끝나면 이와 같은 내용을 확인 하실 수 있어요. 


4. 실행

Redis를 실행시킬때는 현재 redis의 home 경로에서 

src/redis-server

명령을 통해서 실행시키면 됩니다. 실행 옵션 중 redis.conf 파일의 path를 지정해서 실행 시 사용자에 의해 설정해둔 옵션을 적용 시킬 수도 있어요. 이 내용은 적지 않겠습니다. 가장 간단하게 설치하기 위함임! 

이와 같은 화면을 확인 하신거라면 설치가 완료된겁니다. 


5. 테스트

설치된 Redis를 활용하기 위해 jar로 제공되는 Redis 라이브러리를 활용해서 간단하게 메모리 데이터베이스에 넣고 출력하는 작업을 한번 해봅니다. 

라이브러리 이름은 Jedis이고 다운로드를 실행합니다. 

https://github.com/xetorthio/jedis/releases 

여기서 Jedis 라이브러리를 다운받을 수 있습니다. 

하지만 그냥 Java 프로젝트로 실행을 하려고 한다면 Jedis 라이브러리에서는 다른 라이브러리를 필요로 합니다. 

apache의 common-pool 을 다운로드 합니다. 

https://commons.apache.org/proper/commons-pool/download_pool.cgi


6. 테스트 코드 작성

//어느 블로그 퍼웠는데 기억이 안나네요 ㅋㅋ 죄송합니다. 

 JedisPool pool = new JedisPool("192.168.1.119");

Jedis jedis = pool.getResource();

try {

jedis.set("id1", "juju");

jedis.set("id2", "jojo");

jedis.hset("mediabucket:1155", "12345", "555");

jedis.hset("mediabucket:1155", "12346", "666");

System.out.println(jedis.get("id1"));

              System.out.println(jedis.get("id2"));

                   System.out.println(jedis.hget("mediabucket:1155", "12345"));

                   System.out.println(jedis.hget("mediabucket:1155", "12346"));

                   System.out.println(jedis.dbSize());

} finally {

pool.returnResource(jedis);

}

pool.destroy();


7. 결과



*** 참고


Redis를 테스트 용으로 사용하면 간단한 이걸로 사용하면 되지만 설정이 필요한 경우라면 redis에서 이미 만들어놓은 스크립트를 실행시켜주어야 합니다. 

설치폴더의 utils/install_server.sh 를 실행합니다. 

아래와 같이 실행시켜주면 자동으로 재시작합니다. 


그리고 make install을 수행하여 주면 시스템 서비스에 등록이 됩니다. 

즉 

/etc/init.d/redis_6379 start

/etc/init.d/redis_6379 stop

명령어로 내렸다가 올릴 수 있게 됩니다.