본문 바로가기
Dev DBAN/개발 용어 핥아보기

개발 용어 핥아보기 - 레디스(Redis) 알고 쓰기

by 디반 2022. 1. 30. 17:26
반응형

먼저 글에 들어가기 앞서 설명을 하자면 이렇습니다.

 

 

개발 일기 - 성장 할 수 있는 계기

설 연휴가 시작하는 28일 저는 강남에 위치한 블록체인 관련 회사와 백엔드 개발자로 기술 인터뷰와 컬쳐핏 미팅을 진행했습니다. 이야기를 하면서 제가 느낀 점과 배운 것들 그리고 더 성장할

mumin-blog.tistory.com

 

위 포스팅에서 이야기했던 것과 마찬가지로 기술 인터뷰를 진행하면서 나온 이야기 중 제게 부족한 부분을 보완하기 위해 제 스스로 정리해 프로젝트에 적용 시키려 합니다. 

나와 같은 주니어 개발자들이 시니어들과 이야기를 하면서 어려움을 겪지 않았으면 하는 바램에 이렇게 글을 적어봅니다.


 

레디스?

레디스(Redis)는Remote Dictionary Server의 약자로

시스템 메모리를 사용하는 키 - 값 구조의 비정형(형식이 정해져 있지 않는)데이터를 저장하고 관리하는 DBMS

사용 기업으로는 아래와 같고 오픈소스다 보니 정말 많은 곳에서 다양하게 사용되고 있습니다.

 

레디스는 어디에 많이 쓰나요?

인증 토큰 등을 저장

Ranking 보드

유저 API Limit 

조회수와 같은 카운트 형태의 데이터

 

레디스의 데이터 구조는?

문자열(Strings) : 대부분의 데이터를 문자열로 표현함

리스트(List) : 연결 리스트를 의미함. 배열의 좌 우에 각 원소들을 추가 할 수 있고 데이터는 문자열만 가능함

셋(Set) : 리스트와 비슷하지만 고유 값을 저장한다는 점이 다름, 고유 값이 정해진 셋에는 고유 값에 해당하는 멤버 생성 불가능

정렬 셋(Sorted Set) : 말 그래도 셋을 정렬을 해 데이터를 필터링 할 수 있음

해쉬(Hash) : 필드를 가지며 전체를 가지고 오거나 개별 필드를 가져올 수 있음

 

레디스에서 말하는 Key?

레디스의 Key는 문자열로 '안녕' 부터 이미지 파일 까지 모든 이진 시퀀스를 키로 사용 가능하며 최대 512MB까지 저장이 가능합니다. 

그렇다고 키의 이름이 '우리집 강아지 이름은 뽀삐인데 뽀삐가 입는 옷의 브랜드는 구찌야' 와 같이 길게 만든다면 당연히 비용이 엄청 커지기 때문에 길게 사용하는 것은 권장 하지 않고 차라리 Hash의 멤버로 저장하는게 더 좋을것 같습니다. 

레디스의 Key - Value로 이루어진 DBMS이다 보니 Key를 어떻게 설계하느냐에 따라서 성능차이가 확연하게 나는데 권장하는 방법은 '이름 : 뽀삐' 처럼 object-type : id 형태를 권장하고 '이름 : 뽀삐 - 브랜드 - 구찌' 와 같이 .   -   : 를 이용해 관계를 나타낼 수 있습니다.

 


 

조금 더 개인적인 사족을 더 붙혀보자면 

최근 제 프로젝트 DBMS를 MySQL에서 Redis로 migration을 진행하려고 했었는데 진행을 하면 할 수록 프로젝트가 산으로 가는 것 같아 잠시 중단하고 위와 같이 개념과 사용하는 이유들을 찾아보면서 공부하고 있습니다. 

그리고 인터뷰에서도 아래와 같이 질문이 나오기도 했습니다. 

"Redis를 사용하면서 Key값을 어떻게 설정하셨나요?"

물론 질문에 답하진 못했지만 이렇게 Redis에 대해 조금 더 알아보고 이해를 하면 할 수록 제가 그저 Redis를 빠른 DBMS이라는 이유 하나만으로 사용했다는 사실에 부끄러움을 느끼고 사용하는 이유를 더 생각할 수 있는 시간이었습니다. 

물론 제 개인적으로는 쿼리도 줄고 코드의 수가 줄었다는 사실에 엄청 행복해 하고 좋아했었지만 Redis를 온전히 사용하기 위해서는 Key를 어떻게 구성해야 될지부터 엄청나게 고민해야된다는 것을 이제야 알게되었습니다. 

기술을 그저 있으니까 사용하는게 아닌 왜 이게 필요하고 어떤게 나한테 적합한지 알고 쓰는 개발자가 되길 소망하며 글 마치겠습니다 :) 

 

반응형

댓글


"); wcs_do();