Redis란 Remote Dictionary Server의 약자로 Key - Value구조의 데이터를 저장하고 관리하는 인 메모리 데이터 저장소입니다.
Key, Value 형태로 저장되는 구조입니다
다양한 자료구조(String, List, Hash, Set, Sorted Set)를 지원합니다
싱글 스레드 방식으로 연산을 원자적으로 수행이 가능합니다
운영 중인 웹 서버에서 키-값 형태의 데이터 타입을 처리해야 하고, I/O가 빈번히 발생해 다른 저장 방식을 사용하면 효율이 떨어지는 경우에 사용합니다.
ex)
조회수와 같은 카운트 형태의 데이터는 I/O가 괸장히 빈번합니다. 예를 들어, 유튜브의 경우 몇 시간 만에 100만 조회수를 넘기는 경우도 있습니다. 이 때, 조회수에 해당하는 데이터를 RDS 형태의 데이터에 저장해 I/O를 반복할 경우 엄청난 리소스의 낭비일 것입니다.
어마어마한 I/O를 발생시키는 데이터를 처리할 경우, 레디스를 사용해 데이터를 캐싱 처리하고 일정한 주기에 따라 RDS에 업데이트 하는 방식을 사용한다면 RDS에 가해지는 부담을 크게 줄이고 성능을 향상시킬 수 있습니다.
Redis는 싱글 스레드로 운용이 됩니다.
따라서 멀티 스레드를 사용할 때 문제가 되는 Race Condition이나 Context Switching이 발생하지 않습니다. 따라서 DB 관리 시 기본적인 원자성이 보장됩니다.
하지만 싱글 스레드이기 때문에 시간복잡도를 필수적으로 고려해야 합니다. 따러서 O(N) 연산이 수행되는 명령어를 조심해야 합니다.
대표적인 O(N) 명령어
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
좋은 내용이네요~👍👍
Redis의 캐싱전략에 대해서도 알아보면 좋을 것 같네요~