Redis(Remote Dictionary Storage,레디스)는 모든 데이터를 메모리에 저장하고 조회하는 in-memory DB, 모든 데이터를 메모리로 불러와서 처리하는 메모리 기반의 key-value 구조의 데이터 관리 시스템(DBMS)이다. 일종의 NoSQL이다.
주요 특징
• 인메모리 데이터베이스: 모든 데이터를 메모리에 저장하여 매우 빠른 읽기/쓰기 속도를 제공합니다.
• 키-값 구조: 데이터를 키-값 쌍으로 저장하며, 복잡한 쿼리 없이 간단하게 데이터에 접근할 수 있습니다.
• 다양한 데이터 구조: 문자열, 리스트, 해시, 셋, 정렬된 셋 등 다양한 데이터 타입을 지원합니다.
• 영속성: RDB와 AOF 방식을 통해 데이터를 디스크에 저장하여 영속성을 보장할 수 있습니다.
주요 용도
• 캐싱: 자주 접근하는 데이터를 메모리에 저장하여 데이터베이스 부하를 줄이고 응답 속도를 향상시킵니다.
• 세션 관리: 웹 애플리케이션의 사용자 세션 정보를 저장하고 관리합니다.
• 실시간 분석: 빠른 데이터 처리 능력을 활용하여 실시간 로그 분석, 모니터링 등에 사용됩니다.
• 메시지 브로커: Pub/Sub 기능을 통해 애플리케이션 간 메시지 전달에 활용됩니다.
장점
• 높은 성능: 인메모리 특성으로 인해 매우 빠른 데이터 처리 속도를 제공합니다.
• 확장성: 클러스터링을 통해 데이터를 여러 노드에 분산 저장할 수 있습니다.
• 다양한 언어 지원: 여러 프로그래밍 언어에 대한 클라이언트 라이브러리를 제공합니다.
Redis는 이러한 특징들로 인해 현대적인 웹 애플리케이션, 실시간 분석 시스템, 게임 서버 등 다양한 분야에서 널리 사용되고 있습니다.
데이터 구조
Redis는 다양한 데이터 구조를 지원합니다:
1. 문자열(Strings): 가장 기본적인 데이터 타입으로, 텍스트나 이진 데이터를 저장할 수 있습니다.
2. 리스트(Lists): 문자열 요소의 집합으로, 양방향 큐로 사용할 수 있습니다.
3. 해시(Hashes): 필드-값 쌍의 컬렉션으로, 객체를 표현하는 데 유용합니다.
4. 셋(Sets): 정렬되지 않은 고유한 문자열의 집합입니다.
5. 정렬된 셋(Sorted Sets): 각 멤버가 점수와 연관된 정렬된 셋입니다.
6. 비트맵(Bitmaps): 비트 단위 연산을 지원하는 데이터 타입입니다.
7. HyperLogLogs: 집합의 카디널리티를 추정하는 데 사용되는 확률적 데이터 구조입니다.
주요 기능
1. 영속성:
• RDB(Redis Database): 특정 시점의 스냅샷을 생성하여 디스크에 저장합니다.
• AOF(Append Only File): 모든 쓰기 작업을 로그 파일에 기록합니다.
2. 복제(Replication):
• 마스터-슬레이브 구조로 데이터를 복제하여 가용성을 높입니다.
3. 트랜잭션:
• MULTI, EXEC, DISCARD 명령어를 사용하여 여러 작업을 원자적으로 실행할 수 있습니다.
4. Pub/Sub:
• 발행/구독 메시징 패턴을 지원하여 실시간 메시지 전달에 사용됩니다.
5. Lua 스크립팅:
• 서버 사이드에서 Lua 스크립트를 실행할 수 있어 복잡한 작업을 효율적으로 처리할 수 있습니다.
성능 최적화
3. 메모리 관리:
• maxmemory 설정을 통해 메모리 사용량을 제한할 수 있습니다.
• 다양한 메모리 정책(예: LRU, LFU)을 사용하여 메모리를 효율적으로 관리합니다.
2. 파이프라이닝(Pipelining):
• 여러 명령을 한 번에 전송하여 네트워크 지연을 줄입니다.
3. Redis 클러스터:
• 데이터를 여러 노드에 분산 저장하여 확장성을 제공합니다.
보안
5. 접근 제어:
• 비밀번호 인증을 지원합니다.
• SSL/TLS를 통한 암호화된 통신을 지원합니다.
2. 명령어 제한:
• 특정 명령어의 사용을 제한할 수 있습니다.
모니터링 및 관리
7. INFO 명령어:
• 서버의 상태 정보를 제공합니다.
2. MONITOR 명령어:
• 실시간으로 Redis 서버에서 처리되는 명령을 모니터링할 수 있습니다.
3. Redis CLI:
• 명령행 인터페이스를 통해 Redis를 관리할 수 있습니다.
Redis는 이러한 다양한 기능과 특성으로 인해 고성능, 확장성, 유연성이 요구되는 다양한 애플리케이션에서 널리 사용되고 있습니다.
'미분류' 카테고리의 다른 글
Failed to calculate the value of task ':compileJava' property 'javaCompiler'. (0) | 2024.12.20 |
---|---|
ollama 질의 (+apikey) (2) | 2024.12.20 |
ollama generate 예제 (0) | 2024.12.20 |
NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+ 에러 (0) | 2024.12.20 |
Ollama 시작하기 (0) | 2024.12.19 |