[ 신동현 실전 Redis 활용 #1 ] Redis 소개

김수호·2024년 6월 29일
0
post-thumbnail

Redis 소개

  • Remote Dictionary Server
    • Redis 가 Remote Server 라는 의미는, Redis 가 각각의 서버안에 로컬하게 존재하지 않고 다수의 서버에서 공통적으로 사용할 수 있도록 원격에 존재한다는 의미이다.
    • Redis 가 Dictionary 라는 의미는, HashMap 과 같이 Key-Value 형태로 상수 시간 복잡도로 사용이 가능하다는 의미이다.
    • 따라서, Redis 는 다수의 서버가 공유하는 해시 테이블로 이해할 수 있다.
  • Redis 는 ANSI-C 로 작성된 오픈 소스 In-Memory 데이터 저장소이다.
    • Redis 가 In-Memory Data Store 라는 말은, Redis 가 백업을 제외한 모든 데이터를 RAM 에 저장하기 때문이다. ( 일반적으로 RAM은 DISK에 비해 매우 빠르다. )

Redis 특징

  • 1) In-Memory : 모든 데이터를 RAM 에 저장 (백업/스냅샷 제외)
  • 2) Single Threaded : 단일 Thread 에서 모든 task 처리
  • 3) Cluster Mode 지원 : 다중 노드에 데이터를 분산 저장하여 안정성 & 고가용성 제공
  • 4) Persistence : Redis 는 In-Memory 데이터베이스라는 특성상 주로 휘발성 데이터를 저장하지만, RDB(Redis Database) + AOF(Append only file) 라는 옵션을 통해 데이터를 안전하게 영속적으로 관리할 수도 있다.
  • 5) Pub/Sub : Redis 는 Pub/Sub 과 같은 기술이 자체적으로 구현되어 있어서, 이를 활용하면 실시간 채팅이나 알림 서비스와 같은 애플리케이션을 손쉽게 개발할 수 있다.

Redis 장점

  • 1) 높은 성능: 모든 데이터를 메모리에 저장하기 때문에 매우 빠른 읽기/쓰기 속도를 보장한다.
  • 2) Data Type 지원: Redis 에서 지원하는 Data type 을 잘 활용하여 다양한 기능을 구현할 수 있다.
  • 3) 클라이언트 라이브러리: Python, Java, Javascript 와 같은 다양한 언어로 작성된 클라이언트 라이브러리를 지원하기 때문에 백엔드와 쉽게 연동할 수 있다.

Redis 설치 & 실행 (Windows - PowerShell)
( https://redis.io/docs/getting-started/installation/install-redis-on-windows/ )

  • Redis 설치
    • curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
    • echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
    • sudo apt-get update
    • sudo apt-get install redis
  • Redis 실행
    • sudo service redis-server start
  • redis-cli 를 이용한 레디스 서버에 명령 전달
    • 데이터 저장: SET [key] [value]
    • 데이터 조회: GET [key]
    • 데이터 삭제: DEL [key]
    • 참고) 데이터가 없다는 것을 의미하는 값: (nil)
  • 설치 참고)
    • https://robomoan.medium.com/%EC%9C%88%EB%8F%84%EC%9A%B0-11%EC%97%90%EC%84%9C-wsl2%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%B4-%EC%9A%B0%EB%B6%84%ED%88%AC-%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%8B%A4%ED%96%89%ED%95%98%EA%B8%B0-d733ecc0799a
    • https://dangdangee.tistory.com/entry/Redis-Window-10%EC%97%90-%EB%A0%88%EB%94%94%EC%8A%A4-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0

 

✔️ 참고

  • Caching
    • 캐싱(Caching): 데이터를 빠르게 읽고 처리하기 위해 속도가 빠른 메모리를 활용하여 임시로 데이터를 저장하는 기술.
      • 계산된 값을 임시로 저장해두고, 동일한 계산/요청 발생시 다시 계산하지 않고 저장된 값 바로 사용
      • 캐시(Cache) = 임시저장소
    • 사용 사례: CPU 캐시, 웹 브라우저 캐싱, DNS 캐싱, 데이터베이스 캐싱, CDN, 어플리케이션 캐싱
  • Cache Hit & Cache Miss
    • Cache Hit
      • Redis 와 같은 캐시 서버에 특정 key를 가진 캐시를 요청했을 때, 정상적으로 응답이 오는 경우(캐시데이터가 존재하는 경우)를 Cache Hit 라고 표현한다.
    • Cache Miss
      • 이에 반해, key가 잘못되었거나 해당 데이터가 이미 만료되어 데이터를 응답하지 못하는 경우는 Cache Miss 라고 표현한다.
  • Cache-Aside Pattern
    • 애플리케이션에서 클라이언트 요청을 처리할 때, 먼저 캐시를 조회하여 캐시가 존재하면(=Cache Hit면), 그대로 캐시를 사용하여 요청을 처리한다. 그런데 이때 Cache Miss 인 경우, 원본 스토리지(ex. Database)에서 데이터를 조회하여, 데이터를 캐싱하는 패턴을 말한다.
    • 캐시를 사용하는 패턴 중 가장 흔한 형태로, 반드시 알고 있어야 한다.
      • 참고) Cache-Aside 말고도 Write-Through, Write-Behind 같은 패턴도 있지만, 일반적인 애플리케이션에서는 자주 사용되지 않는다.

강의를 듣고 정리한 글입니다. 코드와 그림 등의 출처는 신동현 강사님께 있습니다.
( https://inf.run/BQH4z )

profile
현실에서 한 발자국

0개의 댓글