Redis란?

HeavyJ·2023년 3월 19일
0

jwt

목록 보기
1/1

Redis란 Remote Dictionary Server의 약자로 Key - Value구조의 데이터를 저장하고 관리하는 인 메모리 데이터 저장소입니다.

Redis의 특징

  • Key, Value 형태로 저장되는 구조입니다

  • 다양한 자료구조(String, List, Hash, Set, Sorted Set)를 지원합니다

  • 싱글 스레드 방식으로 연산을 원자적으로 수행이 가능합니다

Redis는 언제 사용하면 좋을까?

운영 중인 웹 서버에서 키-값 형태의 데이터 타입을 처리해야 하고, I/O가 빈번히 발생해 다른 저장 방식을 사용하면 효율이 떨어지는 경우에 사용합니다.

ex)
조회수와 같은 카운트 형태의 데이터는 I/O가 괸장히 빈번합니다. 예를 들어, 유튜브의 경우 몇 시간 만에 100만 조회수를 넘기는 경우도 있습니다. 이 때, 조회수에 해당하는 데이터를 RDS 형태의 데이터에 저장해 I/O를 반복할 경우 엄청난 리소스의 낭비일 것입니다.

어마어마한 I/O를 발생시키는 데이터를 처리할 경우, 레디스를 사용해 데이터를 캐싱 처리하고 일정한 주기에 따라 RDS에 업데이트 하는 방식을 사용한다면 RDS에 가해지는 부담을 크게 줄이고 성능을 향상시킬 수 있습니다.

Single Thread

Redis는 싱글 스레드로 운용이 됩니다.
따라서 멀티 스레드를 사용할 때 문제가 되는 Race Condition이나 Context Switching이 발생하지 않습니다. 따라서 DB 관리 시 기본적인 원자성이 보장됩니다.

하지만 싱글 스레드이기 때문에 시간복잡도를 필수적으로 고려해야 합니다. 따러서 O(N) 연산이 수행되는 명령어를 조심해야 합니다.
대표적인 O(N) 명령어

  • keys
  • FLUSHALL, FLUSHDB
  • DELETE Collections
  • Get All Collections

Redis 사용 시 주의사항

  • 서버에 장애가 발생했을 경우, 그에 대한 운영 플랜이 필요합니다
    - 인 메모리 데이터 저장소의 특성상, 서버에 장애가 발생할 경우 데이터 유실이 발생할 수 있습니다
  • 메모리 관리가 중요합니다
  • 싱글 스레드의 특성 때문에 한 번에 하나의 명령만 처리할 수 있습니다. 따라서 처리하는데 시간이 오래 걸리는 요청이나 명령은 피해야 합니다. 추가로 시간 복잡도를 고려해줘야 합니다.

레퍼런스

https://velog.io/@eastperson/%EB%A0%88%EB%94%94%EC%8A%A4-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0
https://brunch.co.kr/@skykamja24/575
https://www.youtube.com/watch?v=Gimv7hroM8A&ab_channel=%EC%9A%B0%EC%95%84%ED%95%9C%ED%85%8C%ED%81%AC

profile
There are no two words in the English language more harmful than “good job”.

1개의 댓글

comment-user-thumbnail
2023년 3월 20일

좋은 내용이네요~👍👍
Redis의 캐싱전략에 대해서도 알아보면 좋을 것 같네요~

답글 달기