티스토리 뷰

DB

[DB]Redis

rangrangerang 2019. 7. 15. 10:07


PART 1

Redis(REmote DIctionary Server)

0# 두줄요약
V DB의 한 종류인 레디스는 NoSQL DBMS 이며 메모리 위에서 동작(인메모리DB)하기 때문에 속도가 빠르다.
V 하지만 큰 용량의 데이터를 담기에는 비효율적이기 때문에 데이터베이스 캐싱 처리는 레디스에서, 보관은 MySQL과 같은 DB에서 처리하는것이 효율적이다.


1# Redis의 특징

  1. 오픈 소스 소프트웨어이다.
  2. 디스크가 아닌 메모리 기반의 데이터 저장소이다.(In-Memory data structure store)
    => 처리속도가 매우 빠르다.
  3. NoSQL & Cache 솔루션이며 메모리 기반으로 구성된다.
  4. 명시적으로 삭제, Expire를 설정하지 않으면 데이터는 삭제되지 않는다.
    =>영구적 보존
  5. 여러대의 서버 구성이 가능하다.
  6. 데이터베이스로 사용될 수 있으며 Cache로도 사용될 수 있는 기술이다.
  7. 다양한 데이터 구조체(Message Queue, Shared memory, Remote Dictionary)를 지원한다.
  8. 안전한 데이터의 보관과 백업을 위해 두 가지 방법을 제공한다.(다른 서버의 메모리에 실시간으로 복사본 남기기, 디스크에 직접 저장)

2# Redis의 장점
  • 리스트, 배열과 같은 데이터를 처리하는데 빠르고 유용하다.(mysql보다 10배 정도 빠른 성능)
  • 메모리를 활용하면서 영속적인 데이터 보존이 가능하다.
  • 스냅샷(기억장치)기능을 제공하여 메모리의 내용을 파일로 저장하여 해당 시점으로 복구할 수 있다.
  • 1개의 싱글 쓰레드를 사용한다. => 성능저하가 올 수 있다.
  • 여러 대의 서버 구성이 가능하다 => 분산 캐시 서버를 구축할 수 있다.
  • 다양한 API를 지원한다.

3# Redis의 단점

  • 메모리 파편화가 발생하기 쉽다.(메모리를 2배로 사용, Redis는 싱글 쓰레드)
  • 대규모 데이터에 대한 응답속도의 불안정성

4# 데이터 저장 방식

  • 데이터 저장 방식 : key-value 형태
  • 데이터 유형 : String, List, Set, Sorted Set, Hashes
  • 예제

데이터 유형 

key 

value 

 

String 

key 

xxx abe .... 

단순 키/문자열 저장 

 

key2 

xxx 

 

List 

list-key 

xxx,abc,123,xxa 

linked-list 형태의 값 저장 

 

list-key2 

abc,fff,xx,ggg 

 

 Set

set-key 

xxx,xxx,xx,abc 

값의 집합, 중복 허용 안함 

 Sorted Set

ss-key 

abc,bbb,ccc,dd 

정렬된 값의 집합, 중복허용x 

 Hashes

hashes-key 

name:123
,age:abc
,address:xxx 

값이 key/value형식 



5# CRUD에 따른 Redis 데이터 처리

  • Read 요청시 
    1. 방문자, 사용자의 새로운 데이터 서버에 요청
    2. Redis 서버에서 요청 데이터가 있는지 확인
    3. 데이터가 존재하는 경우 만료 여부 확인 후 이 정보를 반환
    4. 정보를 반환한 경우 시간을 현재로 업데이트 후 종료
    5. 데이터가 만료되었거나 없는 경우 삭제 후 주 서버에 요청
    6. 주 서버에서 받은 데이터를 캐싱, 데이터베이스에 저장
    7. 이 값을 방문자에게 반환 후 종료

CUD(Create, Update, Delete) 요청시
1. 방문자가 CUD를 서버에 요청
2. CUD 요청을 주서버에 반영하여 업데이트
3. 변경된 데이터 값을 캐싱데이터인 Redis에서 찾아 삭제 후 종료


6# Memcached와의 차이

Memcached : 인메모리 DB중 하나, 캐시 솔루션

Redis 

Memcached 

데이터를 메모리와 디스크에 모두 저장

(디스크에는 회복용 로그 저장) 

데이터를 메모리에만 저장 

 명시적으로만 데이터 삭제 가능

메모리 공간이 부족할 시 LRU알고리즘으로 데이터를 자동 삭제 

서비스의 특정 기능을 위한 목적으로 캐시데이터 사용

통신 속도를 향상시키기 위한 목적  



[Reference] https://goodgid.github.io/Redis/ https://walldaydream.tistory.com/entry/Redis-%EB%9E%80 https://chickenpaella.tistory.com/77 https://webisfree.com/2017-10-26/redis-%EB%A0%88%EB%94%94%EC%8A%A4%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%BA%90%EC%8B%B1%EC%84%9C%EB%B2%84-%EC%9A%B4%EC%98%81%ED%95%98%EA%B8%B0

http://preview.hanbit.co.kr/2647/sample_ebook.pdf




댓글