[Redis]

[Redis] Redis 간단정리

dyk98 2024. 12. 19. 21:06

Redis

Redis는 오픈 소스 인 메모리 데이터베이스로, 키-값(key-value) 저장소로 사용되며 뛰어난 속도와 유연성을 제공합니다. Redis는 "Remote Dictionary Server"의 약자로, 다양한 데이터 구조를 지원하여 단순한 캐싱 시스템을 넘어 다양한 애플리케이션 시나리오에 활용됨.

주요 특징:

  1. 속도: 데이터가 디스크가 아닌 메모리에 저장되므로 지연 시간이 극히 적으며, 대부분의 작업이 1밀리초 미만의 응답 시간을 제공.
  2. 지원하는 데이터 구조:
    • String: 최대 512MB 크기의 텍스트 또는 바이너리 데이터.
    • List: 삽입된 순서를 유지하는 문자열 리스트.
    • Set: 중복이 없는 문자열 집합.
    • Sorted Set: 점수에 따라 정렬된 데이터 집합.
    • Hash: 필드와 값을 저장하는 구조.
    • HyperLogLog: 데이터 세트에서 고유한 항목 수 추정.
  3. 복제 및 지속성: Redis는 마스터-슬레이브 구조로 복제를 지원하며, 스냅샷(Snapshot)과 AOF(Append Only File) 방식으로 데이터를 디스크에 저장하여 복구를 용이.
  4. 다양한 클라이언트 지원: Java, Python, JavaScript, Go 등 100개 이상의 언어를 지원합니다.

사용 사례:

  • 캐싱: 빠른 데이터 접근을 위해 데이터베이스 앞단에 사용.
  • 세션 관리: 게임, 전자상거래 사이트, 소셜 미디어 등에서 세션 데이터를 효율적으로 저장.
  • 순위표 관리: 정렬된 데이터 구조(Sorted Set)를 활용해 게임 순위표나 인기 콘텐츠 정렬.
  • 속도 제한: API 요청 수 제한, 리소스 관리.
  • 대기열 관리: 작업을 대기열에 추가하고 처리하는 메시지 브로커 역할.
  • 실시간 채팅/메시징: PUB/SUB 구조를 통해 실시간 메시지 교환 지원.

TMI
이후 AWS 베포시!

AWS에서는 Redis 기반의 Amazon ElastiCache를 제공하며, 자동화된 관리와 성능 최적화를 지원합니다. 또한, EC2 인스턴스에서 Redis를 직접 배포하여 커스텀 환경을 구성가능.

Redis는 단순히 데이터 저장소 역할을 넘어, 속도와 효율성이 중요한 실시간 애플리케이션에 필수적인 도구 가 될수 있음.

 

1. Redis 설치

(1) 로컬 환경에서 설치

Linux(Ubuntu 예시):

sudo apt update
sudo apt install redis-server
  • 설치 후 Redis 서버 설정 파일 수정:파일에서 supervised를 systemd로 설정하여 서비스 제어가 가능하도록 변경.
  • sudo nano /etc/redis/redis.conf

macOS:

  • Homebrew를 사용하여 설치:
brew install redis
  • Redis 서버 실행:
redis-server
docker pull redis docker run --name redis -p 6379:6379 -d redis

2. Redis 기본 사용법

Redis CLI 접속

Redis 서버 실행 후, Redis CLI로 접속:

redis-cli

 

3. Redis와 프로그래밍 연동

Redis는 다양한 언어 클라이언트를 지원합니다. Python을 예로 들면:

(1) Redis 클라이언트 설치

pip install redis

(2) Python 코드 

import redis

# Redis 서버 연결
r = redis.Redis(host='localhost', port=6379, decode_responses=True)

# 데이터 설정 및 조회
r.set('key', 'value')
print(r.get('key'))  # 'value'

 

일단 알겠으니 어떻게 Redis 를 활용해서 todolist 를 만들며 더 익혀봐야겠다~!