상세 컨텐츠

본문 제목

[ 데이터베이스 ] Redis란?

실무/[ 데이터베이스 ]

by glenn93 2024. 5. 16. 10:12

본문

728x90
반응형

Redis(REmote DIctionary Server)란?

오픈 소스 인메모리(in-memory) 데이터 구조 저장소이다. 주로 데이터베이스, 캐시, 메시지 브로커로 사용된다. Redis는 매우 빠른 성능과 다양한 데이터 구조를 지원하며, 데이터를 메모리에 저장하여 고속 읽기 및 쓰기 작업이 가능하다.

 

즉, Redis 데이터베이스는 RDB 종류가 아닌 NoSQL 종류의 Key-Value타입의 데이터베이스입니다. 간단하게 공유 메모리 데이터베이스이다.

 

 

 

주요 특징 및 기능

  1. 데이터 구조 지원: Redis는 단순한 키-값 저장소를 넘어서, 다양한 데이터 구조를 지원.
    문자열(Strings), 리스트(Lists), 셋(Sets), 정렬된 셋(Sorted Sets), 해시(Hashes) 등
  2. 고속 성능: 메모리 내 데이터 저장 방식을 사용하여 매우 빠른 읽기 및 쓰기 성능을 제공함. 이는 특히 캐싱 레이어로 사용될 때 유용.
  3. 영구성: 기본적으로 인메모리 데이터 저장소이지만, 데이터의 영구성을 보장하기 위해 스냅샷(Snapshotting)과 AOF(Append-Only File) 방식을 통해 디스크에 데이터를 저장가능.
  4. 복제 및 고가용성: Redis는 마스터-슬레이브 복제를 지원하여 데이터의 고가용성과 읽기 확장성을 제공함. 또한 Redis Sentinel을 통해 자동 페일오버 기능을 구현 가능.
  5. 분산: Redis Cluster를 통해 데이터를 분산 저장하여 수평적 확장이 가능합니다. 이를 통해 많은 양의 데이터를 효율적으로 관리 가능.
  6. 트랜잭션: Redis는 멀티 명령 트랜잭션을 지원하여 일관된 데이터 처리를 보장함.
  7. Pub/Sub 메시징: Redis는 Publish/Subscribe 메시징 패턴을 지원하여 메시지 브로커로 사용할 수 있음.

 

 

 

사용 사례

  • 캐싱: 자주 사용되는 데이터를 캐시하여 애플리케이션의 응답 시간을 개선함.
  • 세션 저장소: 사용자 세션 데이터를 저장하고 빠르게 접근 가능.
  • 실시간 분석: 실시간으로 데이터 분석 및 통계를 처리.
  • 메시지 큐: 간단한 작업 큐 및 메시지 브로커로 사용하여 비동기 작업을 처리.
  • 지리공간 데이터: 지리공간 인덱스를 사용하여 위치 기반 데이터를 처리.
  • 리더보드/순위표: 정렬된 셋을 사용하여 순위 데이터를 효율적으로 관리.

 

 

 

JAVA Redis 사용(Jedis 라이브러리)

1. Jedis library 추가

#MVN
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>4.2.3</version>
</dependency>



#Gradle
implementation 'redis.clients:jedis:4.2.3'

 

2. Redis server 실행
로컬 또는 원격 서버에서 Redis를 실행. (기본적으로 Redis는 포트 6379에서 실행)

3. 자바코드 예제

import redis.clients.jedis.Jedis;

public class RedisExample {
    public static void main(String[] args) {
        // Redis 서버에 연결
        try (Jedis jedis = new Jedis("localhost", 6379)) {
            // 데이터 저장
            jedis.set("key", "value");

            // 데이터 조회
            String value = jedis.get("key");
            System.out.println("Stored value: " + value);

            // 리스트 예제
            jedis.lpush("mylist", "item1");
            jedis.lpush("mylist", "item2");
            jedis.lpush("mylist", "item3");

            // 리스트 데이터 조회
            System.out.println("Stored list: " + jedis.lrange("mylist", 0, -1));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

 

728x90
반응형

관련글 더보기