문자열
, 리스트
, Set
, Sorted set
, Hash
등 여러 데이터 형식을 지원한다.웹 서버에서 key-value 형태의 데이터 타입을 처리해야하며, Input과 Output이 빈번히 발생해 다른 저장 방식을 선택시 효율이 떨어지는 경우 사용.
I/O가 빈번한 경우 ex) 조회수 카운트 (Youtube)
데이터를 캐싱 처리하고 일정한 주기에 따라 데이터베이스에 업데이트 한다면 부담이 적고 효율적이다.
또한 사용자 세션 관리(세션 유지, 불러오기 등)에도 유용하게 쓰인다.
이 외에도 채팅, 메시징 및 대기열, 스트리밍 , 실시간 분석 등에 많이 사용된다.
인메모리 데이터 저장소로서 서버에 장애가 발생하는 경우 데이터가 유실된다.
따라서 스냅샷(Snapshot), AOF 기능을 통한 복구 계획을 미리 세워두는 것을 필요로 한다.
또한 캐시 솔루션으로 사용 시 잘못된 데이터가 캐싱 되는 것을 미리 방지 해야한다.
❗️ 레디스는 기존 관계형 데이터베이스와 달리 데이터 타입(varchar, int, datetime) 등을 지원하지 않음.
<redis의 스키마 예시>
# 유저의 이메일, 닉네임, 로그인 시간을 레디스에 저장시
user:userid:email:문자열
user:userid:nickname:문자열
user:userid:lastlogin:문자열
#레디스는 RDBMS와 달리 키가 많아도 O(1)의 동일한 시간이 적용됨
레디스는 한 번 생성한 키를 선택적으로 삭제하기 어렵기 때문에 주의 해야한다.
특별한 조치를 하지 않으면 키는 영원히 보관되기 때문에 일괄삭제
, 일정 시간 이후 삭제
,기간 만료 후 삭제
방법 중 택해서 사용해야 한다.
https://brunch.co.kr/@skykamja24/575
http://wiki.hash.kr/index.php/%EB%A0%88%EB%94%94%EC%8A%A4
https://engkimbs.tistory.com/869
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=gkenq&logNo=10184366374