Redis

Do_It·2023년 11월 10일

Redis의 정의

  • Remote Dictionary Server
  • Storage : 데이터 저장소 (데이터 관점)
  • Database : 전통적인 DBMS의 역할을 수행 (영속성 관점)
  • Middleware : 어플리케이션이 이용할 수 있는 유용한 기능 제공하는 소프트웨어

Redis로 할 수 있는 것?

  • 아주 빠른 데이터 저장소로 활용
  • 분산된 서버들간의 커뮤니케이션(동기화 , 작업 분할 등)
  • 내장된 자료구조를 활용한 기능 구현

In-memory DB로서의 Redis

  • In-memory DB?
    -> 데이터를 디스크에 저장하지 않음
    -> 휘발성인 RAM에 저장
    -> 빠른 속도
  • 용도에 맞게 DB와 Redis를 사용 (예를 들어 세션과 같은)
  • Cache로도 사용 (원천데이터는 디비에 있음)
  • 어느정도의 영속성도 보장

Key-value store로서의 Redis

  • Key-value store?
    -> 특정 값을 key로 해서 그와 연관된 데이터를 value로 저장(Map과 같음)
    -> 가장 단순한 데이터 저장 방식
    -> 단순한 만큼 빠르고 성능이 좋음
  • 장점
    -> 단순성에서 오는 쉬운 구현과 사용성
    -> Hash를 이용해 값을 바로 읽으므로 속도가 빠름
    -> 분산 환경에서의 수평적 확장
  • 단점
    -> key를 통해서만 값을 찾을 수 있음
    -> 범위 검색 등의 복잡한 질의가 불가능

Redis 활용

  • Session Store
  • Cache
  • Limit Rater
  • Job Queue
    ->별도로 구현해야 했던 공통적인 기능들을 Redis를 사용하면 쉽게 구현 가능함!

NoSQL로서의 Redis

  • NoSQL?
    -> 관계형 DB에서 사용하는 SQL을 사용하지 않는다는 의미
    -> 비 관계형 데이터베이스를 지칭할 때 사용
    -> 데이터 모델이 관계형 데이터베이스와 다름
  • NoSQL(비 관계형 DB)의 종류
    Key-value : Redis, Memcached, Riak
    Document : MongoDB , CouchDB
    Wide-column : Cassandra , HBase
    Graph : Neo4j , OrientDB
  • External Heap(외부 메모리)로서의 Redis
    -> 애플리케이션이 장애가 나도 Redis의 데이터는 보존
    -> 애플리케이션이 여러 머신에서 돌아도 같은 데이터를 접근 가능
  • DBMS로서의 Redis
    -> Redis의 영속화 수단을 이용해 DBMS처럼 이용
    -> 일반 RDB 수준의 안정성을 얻기 위해선 속도를 희생해야 함
  • Middleware로서의 Redis
    -> Redis가 제공하는 자료구조를 활용해 복잡한 로직을 쉽게 구현

Redis 모듈

  • redis-server
  • reids-cli : 레디스 서버에 커맨드를 실행할 수 있는 인터페이스
profile
오늘의 노력이 내일의 성장으로 이어지고 있음을

0개의 댓글