Redis

Redis의 개념

최쌈장 2023. 7. 28. 09:28

Redis라는 DB가 굉장히 핫하다. 채용 공고에서 Redis가 없는 것을 본적이 없는 것 같다. 그러면 Redis가 뭔지, 어떤 문제점을 가지는지, 혹은 어떤 장점을 지니는지 생각해보자.

 

 

Redis란?

redis는 remote dictionary server 라는 것으로 key-value 형태로 데이터를 저장하는 형식을 가지는 DB 서버이다. 다루기 쉬운 구조와 빠르다는 장점을 통해서 많이들 사용하는 것 같다. 그렇다면 왜 빠른 걸까?

 

운영 체제 공부를 하다보면 메모리 부분에서 많이 보이는 그림이다. 위로갈수록 비싸고 빠르고 적게 저장할 수 있고, 밑으로 갈 수록 싸고 느리고 많이 저장할 수 있는 trade off가 있다. 지금까지 DB의 저장 방식은 하드 디스크를 활용해서 저장하는 방식이었다.

하지만 캐시와 메모리를 통해서 DB를 저장할 수 있지 않을까? 라고 생각한 이들이 있었고, 그들의 사고 방식 덕분에 Redis라는 녀석이 탄생하게 되었다.

 

 

Redis는 주로 회원가입 시에 토큰을 비교한다던지, 혹은 빠르게 휘발될 데이터를 적재하고 소멸시키는 용도로 사용이 된다. 다만 데이터를 적재하는 양이 그렇게 많지는 않기 때문에 실제로 많은 회사들이 Redis를 사용하다가 서버에 오류가 생기는 경우도 있다고 한다.

 

 

Redis의 특징

- 장점

1. 빠르다 : 인메모리 방식이기 때문에 하드 디스크와 연동하는 다른 저장방식과는 다르다. 심지어 외부 디스크를 활용하여 저장하는 경우에는 IO 처리도 가미되어 있기 때문에 시간이 더 걸린다는 단점이 있는데, Redis는 이에 해당하지 않는다.

2. key-value로 쿼리가 필요없다. 

3. 다양한 자료구조를 제공한다. (큐, List, set, pub/sub 등) 다른 in-memory DB와 특출나게 다른 지점이다!

 

- 단점

1. 메모리 파편화가 일어날 수 있다. 한번에 할당되는 데이터는 정해져 있고, 만약 1byte만 저장되도 4096byte가 할애되는 경우도 존재한다.

2. single thread이다. 그렇기에 사용할 수 있는 최소한의 연산속도는 O(N)이기에 O(N) 연산을 지양하라고 말한다. 한번의 하나씩밖에 할 수 없기 때문에 속도가 느려질 수 밖에 없다.

 

 

 

'Redis' 카테고리의 다른 글

Redis Pub/Sub을 활용해보자!  (0) 2023.08.19
RedisQueue와 FastAPI  (0) 2023.07.10