레디스

하루·2025년 2월 18일
post-thumbnail

레디스

레디스(Redis)는 인메모리 데이터 구조 저장소로, 빠른 속도와 다양한 데이터 구조를 지원하는 데이터 베이스.

1. 인메모리 데이터베이스 (In-memory Database)

* 데이터를 디스크가 아닌 메모리에 저장하는 데이터베이스. 
* 레디스는 인메모리 데이터베이스로, 높은 속도와 성능을 제공

2. 키-값 저장소 (Key-Value Store)

* 데이터가 키와 값 형태로 저장된다. 
* 레디스는 이 방식으로 데이터를 저장하며, 키는 고유해야 하고 값을 통해 데이터를 조회할 수 있다.

3. 데이터 구조 (Data Structure)

* 레디스는 기본적인 문자열(String)을 비롯하여 리스트(List), 셋(Set), 해시(Hash), 정렬된 셋(Sorted Set) 등 
다양한 데이터 구조를 지원.

4. Pub/Sub (Publish/Subscribe)

* 메시지 기반 시스템에서 사용하는 패턴으로, 한 프로세스가 메시지를 발행(Publish)하고, 다른 프로세스가 그 메시지를 구독(Subscribe)하는 방식

5. 슬로우 로그 (Slow Log)

* 레디스 명령어 실행 시간이 일정 기준 이상인 경우 이를 기록하는 로그. 
* 성능 분석과 최적화를 위한 도구로 활용.

6. 영속성(Persistence)

* 레디스는 기본적으로 메모리에만 데이터를 저장하지만, 영속성을 설정하면 데이터를 디스크에 저장할 수 있다. 
* 영속성 방식으로는 RDB (스냅샷), AOF (Append-Only File) 방식이 있다.

7. RDB (Redis Database Dump)

* 일정 시간 간격으로 레디스의 데이터를 스냅샷 형태로 디스크에 저장하는 방식.

8. AOF (Append-Only File)

* 레디스에서 수행된 모든 쓰기 명령을 로그 파일에 기록하여, 서버 재시작 시 해당 명령을 재실행하여 데이터를 복구하는 방식.

9. 레플리케이션 (Replication)

* 하나의 레디스 서버(마스터 서버)의 데이터를 다른 서버(슬레이브 서버)에 복제하는 방식.
* 이를 통해 데이터의 가용성과 내구성을 높일 수 있다.

10. 클러스터링 (Clustering)

* 여러 대의 레디스 서버를 클러스터로 구성하여 데이터를 분산 저장하고, 더 큰 데이터셋을 처리할 수 있도록 하는 방식.

11. TTL (Time-To-Live)

* 레디스에 저장된 데이터에 만료 시간을 설정하는 기능.
* TTL이 설정된 데이터는 일정 시간이 지나면 자동으로 삭제된다.

12. LRU (Least Recently Used)

* 메모리가 가득 찼을 때 가장 오래 사용되지 않은 데이터를 삭제하는 알고리즘.
* 레디스는 메모리 제한을 설정할 수 있으며, 이 방식으로 데이터를 관리.

13. 트랜잭션 (Transaction)

* 여러 명령을 하나의 단위로 묶어 원자성 있게 처리할 수 있는 기능. 
* MULTI, EXEC, DISCARD, WATCH 명령어로 트랜잭션을 처리할 수 있다.

14. 하이퍼로그로그 (HyperLogLog)

* 매우 큰 데이터의 유일한 개수를 근사적으로 세는 자료구조. 
* 메모리 사용을 최소화하면서 큰 규모의 데이터를 처리할 수 있다.

15. 비트맵 (Bitmap)

* 1과 0으로 이루어진 비트 배열을 사용하여 데이터를 효율적으로 처리하는 자료구조.

-> 레디스는 다양한 데이터 구조와 기능을 제공해 빠르고 효율적인 데이터 처리가 가능하며, 실시간 애플리케이션에서 널리 사용

✅ 대표적인 캐싱 전략

1. Write-Through Cache (쓰기 직후 캐싱)

* 데이터베이스(DB)에 데이터를 쓰면서 캐시에도 즉시 저장하는 방식.
* 장점: 항상 최신 데이터 유지
* 단점: 쓰기 성능이 낮아질 수 있음
* Redis도 이 방식으로 사용할 수 있음.

2. Write-Back Cache (캐시에 먼저 저장 후 나중에 DB 반영)

* 데이터를 캐시에 먼저 저장하고, 일정 시간이 지나거나 특정 조건이 되면 DB에 저장하는 방식.
* 장점: 쓰기 성능이 빠름
* 단점: 캐시 장애 시 데이터 유실 위험
* Redis에서 AOF(Append-Only File) 방식을 사용하면 유사한 효과를 낼 수 있음.

3. Write-Around Cache (캐시는 읽기만, 쓰기는 DB에서 직접)

* 데이터 저장 시 캐시를 거치지 않고 DB에만 저장.
* 장점: 캐시 불필요한 데이터 저장 방지
* 단점: 데이터 갱신 직후 캐시에 없어서 초기 조회가 느릴 수 있음
* Redis도 특정 정책을 설정하면 이 방식으로 활용 가능.

4. Lazy Loading (Cache-aside) (필요할 때만 캐싱)

* 데이터를 요청할 때 먼저 캐시를 확인하고, 없으면 DB에서 가져와 캐시에 저장.
* 장점: 불필요한 캐시 저장을 줄일 수 있음
* 단점: 처음 요청 시 느릴 수 있음
* Redis의 가장 일반적인 사용 방식.

5. Least Recently Used (LRU) / Least Frequently Used (LFU) Eviction

* 오래된 캐시 데이터를 제거하는 방식
* Redis는 기본적으로 LRU, LFU, TTL(Time-To-Live) 기반의 캐시 만료 정책을 제공함.

0개의 댓글