백엔드 개발자 블로그

Redis 개념 본문

DB/Redis

Redis 개념

backend-dev 2024. 2. 19. 18:22

Redis란?

Remote Dictionary Server : 오픈 소스, 인 메모리 데이터 스토어


특징

  • In-memory DB
    • 성능이 빠름
    • 휘발성(AOF, RDB snapshot로 Disk로 백업 가능)
    • Big Size Data에 적합하지 않음
  • key-value store
    • 조회가 빠름
  • Single Thread
    • 동시성 제어가 편함
    • 멀티 쓰레드보다는 느림
  • 다양한 Data Type

사용사례

  • Cache
    • 빠른 조회를 위한 임시 저장소
  • Session Store
    • 서버에 Session 저장 시 Scale out 했을 때 문제 발생 -> redis 공유 저장소로 문제 해결
  • Geospatial
    • 위도 경도 데이터 저장해서 거리 비교 가능
  • Leader board(순위)
    • Sorted Sets : Score로 자동 정렬
  • Pub/Sub
  • Message

Data Type

  • Strings
    • 바이너리 데이터도 저장 가능 -> 이미지 저장도 가능
    • json 직렬화한 데이터 저장 가능
    • 증가/감소에 대한 원자적 연산 가능
    • 단일 쓰레드라서 GET/SET만으로는 번거로움
  • Lists
    • LinkedList
    • Stack이가 Queue 구현하는데 사용
  • Sets
    • 중복 no
  • Sorted Sets
    • 정렬
    • 중복 no
    • Leader boar(순위)와 Rate limit(초과시 차단) 구현하는 데 적절함
  • Hashes
    • field-value pair Collections - HashMap
  • Geospatial
    • 위도 경도 데이터 다룸
  • Bitmap
    • 0과 1로 이루어진 비트열
    • 메모리를 적게 사용하여 대량의 데이터 저장에 유용

CLI

redis-cli


Redis vs MemCached

  1. DataType
    • Redis : Hash, List, Set, Sorted Set, Geo, String
    • Memcached : String
  2. Thread
    • Redis : Single Thread
    • Memcached : Multi Threads
  3. Scale
    • Redis : ScaleOut
    • Memcached : Scale Up
  4. Memory Policy
    • Redis : no eviction, volatile-lru, volatile-ttl, allkey-random
    • Memcached : LRU
  5. Persistence
    • Redis : AOF, RDB
    • MemCached : None
  6. ETC
    • Redis : LUA Script를 사용해서 복잡한 작업들 할 때 이용 가능

Redis Library

  • Jedis
    • 개발 복잡도가 낮다.
  • Lettuce
    • 다양한 옵션이 존재한다.
    • Scaling에 좋다.
    • non-blocking, reactive application에 유리

아키텍처

  1. Stand Alone
  2. Master-Slave
    • 보통 Master가 Write 작업을 담당, Slave가 Read 담당
  3. Sentinel
    • Master 장애 시 Slave->Master, Master->Slave
  4. Cluster
    • Master-Slave x n
    • 샤딩 가능, 가용성 좋음

주의점

  • 시간 복잡도 N이상인 명령어(전체 조회) 주의
  • Single Thread라서 문제 발생할 수도 있음

'DB > Redis' 카테고리의 다른 글

Redis 설치 및 설정  (0) 2024.03.15
Redis UI Tools  (0) 2024.03.15
Redis 장애 상황과 대응  (0) 2024.03.15
Redis CLI  (0) 2024.02.19