Redis 란?

 

  • Redis 는 NoSQL 의 한 종류이다.
  • REmote DIctionary Server 를 의미

 

NoSQL 이란?

 

NoSQL은 데이터베이스는 전통적인 관계형 데이터베이스 보다 덜 제한적인 일관성 모델을 이용하는 데이터의 저장 및 검색을 위한 매커니즘을 제공한다. NoSQL 데이터베이스는 단순 검색 및 추가 작업을 위한 매무 최적화된 키 값 저장 공간으로 레이턴시와 스루풋과 관련하여 상당한 성능 이익을 내는 것이 목적이다.

출처 : https://ko.wikipedia.org/wiki/NoSQL

기존 관계형 데이터베이스와는 조금 다는 목적성을 가진 데이터베이스 입니다.

데이터베이스 분선처리, 빠른 쓰기, 데이터의 안정성등 빠른 퍼포먼스를 내기 위해 사용되는 것입니다.

 

NoSQL 의 종류

 

  • Key-Value 형
    • 특정 데이터에 대해서 key/value 형태로 저장하는 데이터로 구현하기 쉬우나 일부를 읽거나 업데이트에는 비효율적이다.
    • 종류
      • Tokyo Cabinet
      • Redis
      • Voldemort
      • Oracle BDB
      • Amazon SimpleDB
  • Column family 형
    • 여러 서버에 분산된 수많은 데이터를 저장,처리 하기 위해 만들어짐
    • Key-Value 형 처럼 Key를 사용하지만 Key-Value 형과 다르게 여러개의 컬럼을 가리키고 있고 컬럼은 컬럼 패밀리에 따라 정렬된다.
    • 종류
      • Cassandra, HBase
  • Document DB 형
    • 기본적으로 Key-Value 와 비슷함
    • json과 xml 형태로 많이 저장함.
    • 종류
      • CouchDB, MongoDB
  • Graph 형
    • SQL 은 Row, Column 기반의 테이블과 정형화된 구조를 가짐
    • SQL 대신 유연한 graph model 을 여러 서버들에 확장할 목적으로 사용 가능
    • DB 조회는 데이터 모델에 기반함
    • 종류
      • Neo4J, InfoGrid, Infinite Graph

 

Redis 특징?

 

  • In-Memory Data Structure Store
    • 디스크가 아닌 메모리 기반
    • In-Memory Cache : 캐시 방식을 통해 DB Read 부하를 감소시키는 방법
  • 리스트, 배열 형식의 데이터 처리에 특화 됨
    • value 값으로 문자열, 리스트, set, sorted set, hash 형 등 여러 데이터 형식을 지원
    • 리스트 형 데이터의 입력과 삭제가 MySQL 에 비해 10배 정도 빠르다.
  • 여러 프로세스에서 동시에 같은 Key 에 대한 갱신을 요청할 경우 Atomic 한 처리로 데이터 부정합 방지. Atomic 처리 함수를 제공
  • 메모리를 활용하면서 영속적인 데이터 보존
    • 명령어로 명시적으로 삭제하거나 expires 를 설정하지 않으면 데이터를 삭제하지 않는다.
    • 스냅샷 기능을 제공하여 메모리의 내용을 *.rdb 파일로 저장하여 해당 시점으로 복구할 수 있다.
  • 싱글 스레드 이기 때문에 atomic 하게 동작한다.
    • 즉, 한번에 하나의 행동이 되는 것을 보장한다.
  • Open 소스
  • NoSQL & Cache 솔루션이며 메모리 기반으로 구성
  • 여러대의 서버 구성 가능
  • 지원되는 데이터 구조
  • Strings, sets, sorted-set, hashes, list
  • Hyperloglog, bitmap, geosptial index
  • 성능은 서버에 따라 다르나 초당 2만 ~ 10만회 수행

 

Cache 를 왜 사용하는가?

 

Cache : 요청에 대한 결과를 미리 저장하였다가 빠르게 서비스 해줄 수 있음

보통 DB 는 CRUD 시 DISK에 저장되고 있기 때문에 많은 용량을 저장할 수 있다라는 장점은 있으나 그만큼 소요시간이 많이 걸린다. 그러나 Cache는 메모리를 사용하기 때문에 속도가 빠르다.

 

 

Redis 커맨드

 

  • Redis 는 기본 형태로 key-value 로 데이터를 저장함
  • key와 관련된 커맨드
    • EXIST : 해당 key가 존재하는지 확인
    • DEL : Key 삭제
    • TYPE : key와 value가 어떤 타입을 사용하는지 반환
    • SCAN : Key의 목록을 커서 단위로 가져옴

 

Redis 운영시 참고 사항

 

  • 메모리는 한정적인 경우가 많으므로 대부분 key에 Expire를 설정할 것을 권장
    • 동일한 key가 들어오는 경우 timeout 이 재설정 됨
    • Expire 는 collection 의 각각 item 에 개별적으로 걸리지 않고 전체 Collection에 대해서만 걸림
    • → 즉 해당 1000개의 아이템을 가진 collection이 expire 이 설정 되어 있다면 해당 시간 이후에 1000개의 아이템이 모두 삭제 됨
  • 메모리 관리를 잘해야 한다.
    • Physical Memory 를 사용할 경우 문제가 발생할 수 있음→ swap 이 있다면 Max memory 를 설정해도 이보다 더 사용할 가능성이 큼
    • → swap 이 있다면 swap 사용으로 해당 메모리 page 접근시 마다 latency 가 발생

'개발 > 이론' 카테고리의 다른 글

JWT 란?  (0) 2021.12.08
OSI7계층/네트워크 통신의 7계층  (0) 2020.11.29