개요

인프런 실전! Redis 활용 강의를 듣고 정리한 포스팅이다.

redis의 자료형에 대해 알아보고 익숙해지기 위해 예시 코드를 작성해보도록 한다.

 

Redis 자료형 특징

  1. 데이터 타입에 따라 명령어가 다르다.
  2. 대소문자 구별을 하지 않기 때문에 명령어를 대문자/소문자 구분없이 작성 가능하다.

 


Strings

문자열, 숫자, serialized object(JSON) 등 여러 자료형을 저장하는 Strings Type이다. 레디스는 int, Integer 등 별도의 숫자 관련 자료형 없이 모두 strings로 저장한다. strings로 저장되어도 사칙 연산이 가능하다.  (Java를 가장 많이 쓰는 입장에서 이 점이 젤 신기했다.) 

 


Strings 명령어

  • SET

 

lecture라는 변수에 “inflearn-redis”라는 문자열 값을 부여한 것이다. 1편에서 레디스는 해시 테이블로, key-value 쌍인 구성이라고 하였다. 이러한 특성을 통해 key값으로 value값을 도출할 수 있다.

SET으로 값 설정하고, GET으로 값 꺼내기

 

 

 

  • MSET, MGET

여러 값을 set, get할 수 있다.

 

 

 

  • 숫자 형태 Strings 저장할 때 

INCR : 숫자형 string 값을 +1

INCRBY: 숫자형 string값을 지정한 만큼 +n

SET price 10
INCR price # price: 11
INCRBY price 9 # price: 20

 

 

 

  • JSON 직접 저장
SET inflearn-redis '{"price": 100, "item": "abc"}'

# key: inflearn-redis
# value: JSON objects

 

 

 

  • redis에서는 일반적으로 key를 만들 때 의미별로 콜론을 통해 구별한다.
SET inflearn-redis:ko:price 200

 

 


Lists

Strings를 Linked List로 저장하는 데이터 타입으로, Double Linked List로 구현되어 있어, 그 특성에 맞게 양 끝에서 데이터를 조작할 수 있다. 즉, 양끝에서의 push/pop에 최적화되어있다. 상수 복잡도((O(1))을 갖는다.

 

명령어를 통해 레디스의 리스트를 조작해보자.

 

 

1. LPUSH와 RPOP 조합으로 queue 조작하기

LPUSH queue job1, job2, job3
RPOP queue # jop3

 

 

2. LPUSH와 LPOP 조합으로 stack 조작하기

LPUSH stack job1, job2, job3
LPOP stack # job3

 

 

3. LRANGE를 통해 다수의 아이템 조회하기

LPUSH stack job1, job2, job3
LRANGE queue -2 -1 # 인덱스가 -2인것부터 -1인 것까지  즉, 가장 먼저 추가된 것과 그 다음 것 조회
LRANGE queue 0 -1 # 처음부터 마지막까지 모두 조회
LTRIM queue 0 1 # 인덱스가 0인 것부터 1인 것까지만 남기고 모두 삭제

 

인덱스는 왼쪽부터 0으로 시작하고, 오른쪽(거꾸로)부터 -1로 시작한다.

 


Sets

정렬 없이, 중복되지 않은 string을 저장하는 집합이다.

 

1. 집합 생성 및 원소 추가 명령어

  • person1이라는 집합에 apple, banana, orange 원소 추가. (grape라는 중복 요소를 추가했지만 하나만 추가된다.)
sadd person:1:favorite apple, banana, grape, grape

 

 

 

2. 집합 조회

 

smembers person:1:favorite # apple, banana, grape

 

 

 

3. 집합 Cardinality(특정 집합의 유니크한 개수) 조회

 

scard person:1:favorite

 

 

4. 특정 아이템 포함 여부 조회 

  • 1(true) 또는 0(false) 반환

 

sismember person:1:favorite banana
sismember person:1:favorite melon

 

 

 

5. Set Operation

 

person2라는 집합에 apple, melon을 생성 및 추가한 상황에서의 person1과 집합 연산

  • sinter: 교집합
  • sdiff: 차집합(앞에 선언된 집합 - 뒤에 선언된 집합)
  • sunion: 합집합

sebinChu