Redis 알아보기

gryoh·2022년 8월 17일
0

Redis를 알아보기 전에 Cache에 대해 알아보자


Cache(캐시)

웹 서비스는 대게 WEB-WAS-DB의 3티어 구조입니다

사용자가 많지 않을 때에는 이러한 3티어 구조로도 충분히 가능하지만 사용자가 많아지고 데이터가 커질수록 데이터베이스에 부하가 걸리기 시작합니다. 데이터베이스를 이용하면 데이터를 영속적으로 관리할 수 있지만, 입출력에 다소 시간이 걸리기 때문에 실시간 서비스에서는 더 적합한 저장소를 사용할 필요가 있습니다.

따라서 데이터베이스 혼자만의 부담을 줄이기 위해 캐시서버 도입을 검토하게 됩니다.

나중에 요청 올 결과를 어딘가 미리 저장해두었다가 빠르게 서비스를 해주는 것

같은 요청이 여러번 들어오게되더라도 캐시서버에서 바로 결과값을 반환해주기 때문에 데이터베이스의 부담도 줄이고 서비스 개선도 됩니다.

Redis(레디스)

Remote Dictionary Server의 약자로써, 키-값 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 데이터 저장소입니다

2009년 살바토르 산필리포(Salvatore Sanfilippo)가 처음 개발했으며, 2015년부터 Redis Labs가 지원하고 있습니다. Redis는 메모리 기반의 저장소이기 때문에 필요한 정보를 빠르게 저장하고 가져올 수 있는 실시간 서비스에 적합한 저장소입니다. 모든 데이터를 메모리에 저장하기때문에 읽기와 쓰기 명령이 매우 빠릅니다. 그런데 메모리는 휘발성이기 때문에 시스템이 꺼지면 모든 데이터가 날아가게 됩니다. 따라서 데이터를 지속적으로 유지하기 위해 모든 작업을 로그에 기록해서 디스크에 저장한 후, 시스템을 구동할 때 로그를 기반으로 데이터를 다시 메모리에 올리는 방식을 사용합니다. 따라서 전체 데이터를 영구히 저장하기보다는, 캐시처럼 휘발성이나 임시성 데이터를 저장하는 데 많이 사용됩니다.

Redis 데이터 구조

  1. String - 단순한 키-값 매핑 구조입니다. 일반적인 문자열로 최대 512Mbyte 길이까지 지원, Text 문자열뿐만 아니라 Integer와 같은 숫자나 JPEG와 같은 Binary 파일까지 저장 가능합니다.

  2. Sets - 순서가 없는 Strings 데이터 집합입니다. Sets에서는 중복된 데이터는 하나로 처리하기 때문에, 중복에 대한 걱정을 할 필요가 없습니다.

  3. Sorted Sets - 위의 Sets와 같은 구조이지만, Score(가중치)를 통해서 순서를 정할 수 있습니다. Sorted Sets를 사용하면 Leaderboard와 같은 기능을 손쉽게 구현하실 수 있습니다. 데이터는 오름차순으로 내부 정렬

  4. Lists - Array형식의 데이터구조입니다. List를 사용하면 처음과 끝에 데이터를 넣고 빼는 것은 속도가 빠르지만 중간에 데이터를 삽입할 때는 어려움이 있습니다.

  5. Hashes - 키-값의 구조를 여러개 가진 object 타입을 저장하기 좋은 구조입니다.

0개의 댓글