Redis는 데이터 저장소 역할을 하며, 오늘날 개발 환경에서는 많이 사용된다.
근데 왜 인기가 많고 많이 사용될까 ? 바로, 높은 성능을 보여주기 때문이다.
즉, 오늘날 서비스 사용자 트래픽에 대한 빠르게 제공해주어야하기 때문이다.
왜냐하면 전통적인 데이터베이스(Mysql, Oracle)에 비해서 In-Memory 저장소라는 특징을 가지고 있기 때문에 높은 접근 속도를 보여주기 때문이다
그리고 Redis가 자체적으로 저장하는 데이터 타입(String, Set, Map, SortedMap)이 있기 때문이다. 즉, 여러가지 데이터 저장소의 모양들을 제공한다.
자바에서 사용되는 Collection과 같다고 생각할 수 있다.
따라서, Redis를 사용하면
그렇다면 In-Memory DB가 무엇인지에 대해서 알아보자.
In-Memory DB는 간단하게 설명하면 메모리(RAM)에 저장한다는 것이다. 과거에 DB라고 하면 전통적으로 디스크에 저장한다고 생각했다.
RAM에 저장하면 휘발성이라는 특징과 비싸다는 특징이 있다. 이처럼 Redis를 사용하면 매우 빠른 성능을 보여주지만, 휘발성이라는 단점을 보여준다.
위 사진을 봤을 때 Disk와 RAM의 속도차이는 약 40배 정도인 것을 확인할 수 있다. 따라서, 휘발성이라는 단점을 가지지만, 오늘날과같에는 빠른 성능을 중요하게 생각하기 때문에 Redis를 사용하게 되는 것이다.
정리를 해보면, Redis는 In-Memory DB로서, 전통적인 데이터베이스보다 훨씬 빠르지만, 휘발성 특징을 가진다는 것이다.
그렇기 때문에 세션과 같이 휘발되어도 크게 상관 없는 데이터(단기적인 데이터)는 Redis에 저장하고, 영구적으로 필요한 데이터(높은 무결성을 요구하는 데이터)는 전통적인 데이터베이스에 저장하는 방법도 있다.
즉, 용도에 맞게 DB와 Redis를 사용할 수 있다는 것이다.
Key-Value Store는 데이터를 저정할 때 구조이다.
즉, Key와 Value 형태로 데이터를 저장한다는 말이다.
자바를 생각해본다면, Array, List, Map 등 여러 자료구조들이 존재하고, 서로 다른 인터페이스를 가지고 있으며, 성능적으로도 다른 특성을 가지고 있다.
그렇다면 Key-Value Store는 어떤 특징을 가질까 ?