본문 바로가기

카테고리 없음

Redis 데이터 타입

String 요약

 - 가장 기본적인 테이터 타입으로 제일 많이 사용

 - Key value 문자열이 저장됨 

   - 문자열이 저장될때 바이트 배열로 저장됨

   - binary-safe (모든 문자를 표현할 수 있음)

  - 한키에 담을수 있는 밸류는 512M

 명령어 기능 예제
SET 특정 키에 문자열 값을 저장 SET say hello
GET 특정 키의 문자열 값을 얻어온다 GET say
INCR 특정 키의 값을 Integer로 취급하여 1 증가 INCR mycount (아토믹하다)
DECR 특정 키의 값을 Ineger로 취급하여 1 감소 DECR mycount (아토믹 하다)
MSET 여러 키에 대한 값을 한번에 저장 MSET mine mil your coppe
MGET 여러 키 에 대한 값을 한번에 얻어온다 MGET mine your

 - INCR, DECR은 연산은 아토믹 하기 때문에 레이스 컨디션이 발생하지 않는다 왜?

 

LIst 요약

 - Linked-List 형태의 자료구조 ( 인덱스 접근은 느리지만 데이터 추가 삭제가 빠름)

 - Queue와 Stack으로 사용할 수 있음

 - 앞에서 넣고 앞에서 빼면 스택

 - 앞에서 넣고 뒤어서 빼면 큐

 

명령어 기능 예제
LPUSH 리스트 왼쪽(head)에 새로궁 값을 추가 LPUSH myfirst apple
RPUSH 리스트 오른쪽(tail)에 새로운 값을 추가 RPUSH myfirst banana
LLEN 리스트에 들어있는 개수를 반환 LLEN myfirst
LRANGE 리스트의 특정 범위를 반환 LRANGE myrist 0 -1 첫번째부터, 가장 마지막번까지
LRANGE myfirst 0 -2 첫번째부터 마지막에서 두번째까지
LPOP 리스트의 왼쪽(head)에서 값을 삭제하고 반환 LPOP myfirst
RPOP 리스트의 오른쪽 (tail)에서 값을 삭제하고 반환 RPOP myfirst

 

Hashes요약

  - 하나의 Key 하위에 여러개의 field-value쌍을 저장

 - 여러 필드를 가진 객체를 저장하는 것으로 새악

 - HINCRBY명령어를 사용해 카운터로 활용 가능

 

명령어 기능 예제
HSET 한개 또는 다수의 필드에 값을 저장 HSET user1 name bear age 10
HGET 특정 필드의 값을 반환 HGET user1 name
HMGET 한개 이상의 필드값을 반환 HMGET uer1 name age
HINCRBY 특정 필드의 값을 Integer로 취급하여 숫자 증가 HINCRBY user1 viewcount1
HDEL 한개 이상의 필드를 삭제 HDEL user1 name age
HKEYS 특정키의 필드를 조회 HKEYS uwer1

 

SortedSets 요약

 

 - Set과 유사하게 유니크값의 집합

 -  각 값은 연관된 score 가지고 정렬되어 있음

 - 정렬된 상태이기 때문에 빠르게 최소값/최대값을 구할수 있음

명령어 기능 예제
ZADD 한개 또는 다수의 값을 추가 또는 업데이트 ZADD myrank 10 apple 20 banana
ZRANGE 특정 범위의 값을 반환(오름차순으로 정렬된 기준) ZRANGE myrank 0 1
ZRANK 특정 값의 위치(순위)를 반환 (오름차순으로 정렬된 기준) ZRANK myrank apple
ZREVRANK 특정 값의 위치(순위)를 반환(내림차순 정렬기준) ZREVRANK myrank apple
ZREM 한개이상의 값을 삭제 ZREM myrank appl

 

Bitmaps요약

 - 비트 벡터를 사용해 N개의 Set을 공간 효율적으로 저장

 - 하나 비트맵이  가지는 공간은 4,294,967,295(2^32 -1) 42억개 저장가능

 - 비트 연산 가능

 - 유저의 방문 현황을 저장할수 있음

 

명령어 기능 예제
SETBIT 비트맵의 특정 오프셋값을 변경 SETBIT visit 10 1
GETGIT 비트맵의 특정 값을 반환 GETBIT visit 10
BITCOUNT 비트맵에서 set(1)인 비트의 갯수 반환 BITCOUNT visit
BITOP 비트맵간의 비트 연산 수행하고 결과를 비트맵에 저장 BITOP AND result today yesterday (양쪽다 1인걸 result에 넣음)

 

HyperLogLog요약

 - 유니크한 값의 개수를 효율적으로 얻을수 있음

 - 확률적으로 자료구조 오차가 있으며 매우 큰 데이터를 다룰때 사용

 - 12K까지 메모리를 사용하며 0.81% 오차율을 허용

 

명령어 기능 예제
PFADD HyperLogLog값들을 추가 PFADD visit Jay Peter Jane
PFCOUNT HyperLogLog에 입력된 값들의 cadinality(유일값 수)를 반환 PFCOUNT visit
PFMERGE 다수의 HyperLogLog를 병합 PFMERGE result visit1 visit2