오늘은 Redis에 대해 알아보도록 하겠다.
Redis에 대한 사전적 정의를 내린다면 아래와 같이 이야기할 수 있다.
- 사전적 정의
Key-Value 기반의 In-Memory 데이터 저장소
즉, Redis는 Key-Value형태로 저장되는 NoSQL의 일종이며 In-Memory 방식으로 데이터를 CRUD한다.
그렇다면 Redis의 장점은 무엇일까?
In-Memory 방식
기본적으로 우리가 아는 대부분의 DBMS는 디스크에 데이터를 쓰는 구조로 이루어져 있다.
직접 물리 디스크로 저장하는 방식은 일관성은 보장되지만 속도면에서 다소 아쉬운 부분이 존재한다. 하지만 메모리에 데이터를 저장하고 조회하는 Redis는 이러한 면에서 우위에 있다는 점이 첫번째 장점이다.
Key-Value 형태 저장
No-SQL의 일종인 Redis는 다른 No-SQL과 유사하게 모든 데이터를 Key-Value 형태로 저장한다.
그리고 이러한 방식으로 데이터를 저장할 시, 장점은 첫번째 장점과 동일하게 조회 속도라고 볼 수 있다.
자료형 제공
Redis는 다른 No-SQL과 달리 자료구조를 지원한다. 즉, 각 데이터가 자료형을 갖을 수 있기 때문에 개발의 편의성이 향상되고 난이도가 낮아진다는 장점이 있다.
Redis 자료형 Type
Strings: 단순 Key/Value 매핑 구조
Lists: Array 형식의 데이터 구조
Sets: 순서없는 Strings 데이터 집합. 중복 제거
Sorted Sets: Sets과 동일한 특징을 갖지만 Score를 통해 정렬 가능
Hashes: Key/Value의 구조를 여러개 가진 Object 타입을 저장하기 좋은 구조
최초 redis를 설치하는 것부터 시작하도록 하자.
brew install redis
이제 redis server를 실행시켜주도록 하자
redis-server
서버를 실행시켰다면 이제 Client에 접속하도록 하자.
redis-cli
위와 같이 정상적으로 접근이 됐다면 redis 명령어를 사용할 준비는 끝났다고 볼 수 있다.
이제 데이터를 넣고 조회해보도록 하자.
Strings 데이터 추가: set key value
Strings 데이터 조회: get key
Strings 문자열 이어붙이기: append key "~~"
sets 데이터 추가: sadd set:key value
sets 데이터 조회: smembers set:key
앞서 언급한 것처럼 Sets는 순서를 보장하지 않기 때문에 넣는 순서대로 인입되지 않을 수 있다.
Sorted sets 데이터 추가: zadd key score member
Sorted sets 데이터 조회: zrange key min max
앞서 사용해본 Set과 달리 Sorted Set은 score을 통해 우선순위를 명시하기 때문에 같은 score라면 먼저 들어온 순서 / 다른 score라면 조건에 맞는 순서대로 조회 가능하다.
Hashes 데이터 추가: hset key field value
전체 Hashes 데이터 조회: hgetall key