What is Redis?
Redis는 Remote Dictionary Server의 약자로서, "키-값" 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비 관계형 DBMS입니다. 2009년 살바토르 산필리포(Salvatore Sanfilippo)가 처음 개발했으며 2015년부터 Redis Labs가 지원하고 있습니다. 모든 데이터를 메모리로 불러와서 처리하는 메모리 기반 DBMS이며, 현재 Redis는 가장 인기 있는 키-값 저장소로 알려져 있습니다.
또한, Redis는 in-memory 데이터 저장소 이외에도 database, cache와 message 브로커로도 사용됩니다.
Redis의 특징
Redis는 single thread로 동작하기에 아래와 같은 상황에 atomic operation이 보장됩니다.
- appending to a string
- incrementing the value in a hash
- pushing an element to a list
- computing set intersection, union and difference
- getting the member with highest ranking in a sorted set
Redis는 in-memory로 동작하여 뛰어난 처리 속도를 보여줍니다. 또한, in-memory 캐시임에도 불구하고 dataset dump나 log appending을 통해 persistence하게 사용할 수 있습니다. persistence 관련 지원은 성능을 위해 optional 하게 선택할 수 있습니다.
Redis의 Collections
이전까지의 key-value 저장소는 string key와 string value의 저장을 지원했습니다. Redis가 가지는 가장 큰 강점은 다양한 Collection을 지원한다는것입니다. 아래는 Redis가 지원하는 Collection의 종류입니다.
- String : 문자열 <key, value>
- List : 리스트 <key, value[]>
- Set : 집합 <key, Set<value>>
- Sorted Set : 순서를 갖는 집합 <key, Set<value(with score)>>
- Hash : 해시 <key, <field, value>>