다시 기억하고자 정리한 글
내가 다시 알아볼 수 있게 정리한 글이라 책에 적힌 순서와 내용이 다를 수 있음을 밝힘
String형은 문자열, 이진 데이터 등을 위한 자료형, 이미지나 실행파일 등 문자열 이외의 데이터도 저장할 수 있습니다.
String 형은 값을 저장할 때 SET
, 값을 불러올 때 GET
을 사용합니다.
이미 존재하는 키에 쓰기 작업을 수행하면 기본적으로 덮어지게 됩니다.
자세한 내용은 레디스 공식 문서 String 참조
Commands | 설명 |
---|---|
GET | > GET Key 로 key에 대한 value 값을 가져옵니다. 키가 존재하지 않는 경우 nil 을 반환 |
SET | > SET Key value 로 값을 저장합니다. |
MGET | > MGET key1 key2 로 n개의 key에 대한 value를 가져옵니다. |
MSET | > MSET key1 val1 key2 val2 로 n개의 값을 한번에 저장할 수 있습니다. |
APPEND | > APPEND key val 키가 존재하는 경우 val 값을 추가합니다. 존재하지 않는 경우에는 새로운 key를 만듭니다. |
STRLEN | key값의 문자열 길이를 반환 |
GETRANGE | key 값을 기준으로 범위를 지정하여 데이터를 반환 |
SETRANGE | 지정한 옵셋의 위치를 중심으로 키값을 저장 |
GETDEL | 값을 가져오고 동시에 해당 키를 삭제 |
MSETNX | 여러 값을 저장하는 것은 동일하나, 하나의 key 값이라도 존재하는 경우에 저장에 실패 |
Commands | 설명 |
---|---|
INCR | 값을 1만큼 증가 키가 존재하지 않는 경우에는 0을 값으로 저장 (아래 명령어 동일) |
INCRBY | 값을 지정한 값만큼 증가 |
INCRBYFLOAT | 부동 소수점으로 표현된 값을 지정한 값만큼 증가 |
DECR | 값을 1만큼 감소 |
DECRBY | 값을 지정한 값만큼 감소 |
key에 TTL을 설정할 수 있습니다.
> SETEX key 100 val
> TTL key
> 90
key 값에 100초를 설정하고, 10초 뒤 TTL을 조회 시 90초로 조회됩니다.
이미 저장된 key에 대해서는 EXPIRE key 100
지정 가능하며 SETEX 대신 SET key val EX 100
으로 가능합니다.
값을 삽인한 순서대로 유지하는 자료형, 스택이나 큐등으로 사용하기 좋다.
List 형은 좌우 끝부분에 요소를 추가 및 삭제하거나 부분적으로 요소를 가져오는 등의 동작을 할 수 있습니다. 중간 부터 접근하는 것은 느리며 데이터가 큰 경우 주의가 필요
자세한 내용은 레디스 공식 문서의 List 형 명령어 참조
Commands | 설명 |
---|---|
LPOP key [COUNT] | 리스트 왼쪽부터 값을 가져오고 삭제, count 옵션으로 지정한 수 만큼 반환하고 삭제 |
LPUSH | 리스트 왼쪽부터 값을 저장 |
RPOP key [COUNT] | 리스트 오른쪽부터 값을 가져오고 삭제 |
RPUSH | 리스트 오른쪽부터 값을 저장 |
LMPOP key [LEFT or RIGHT][COUNT count] | 리스트 왼쪽 or 오른쪽부터 여러 개의 값을 가져오고 삭제 |
LINDEX key index | 리스트에서 지정한 인덱스에 값 조회 |
LINSERT key [BEFORE or AFTER] find_val, save_val | 지정한 인덱스에 값을 저장, 지정한 인덱스를 찾지 못하면 -1을 반환 |
LLEN | 리스트의 길이 |
LRANGE key a b | 지정한 범위의 인덱스 값 반환 |
LREM key count val | count가 양수면 시작->끝, 음수면 끝->시작으로 이동하며 일치하는 개수 만큼 삭제 0인경우는 리스트 내 일치하는 모든 값을 삭제 처리 |
LSET key index val | 지정한 인덱스의 값을 갱신 |
LTRIM key a b | a to b 사이에 있는 값으로 리스트 갱신 |
LPOS key val [RANK rank][COUNT count][MAXLEN len] | val에 일치하는 인덱스 반환 RANK 몇 번째, COUNT 일치 개수 |
LPUSHX | 리스트가 있는 경우 왼쪽부터 값을 저장 |
LMOVE key1 key2 [LEFT or RIGHT][LEFT or RIGHT] | key1에 있는 val 값을 key2로 값으로 이동 LEFT or RIGHT 옵션에 따라 이동 복사 위치가 달라짐 |
LPUSHX | 리스트가 있는 경우에 오른쪽부터 값을 저장 |
Hash형은 순서 없이 필드와 값이 여러 쌍으로 매핑된 자료 구조. 객체 스토리지로 사용할 수 있습니다.
자세한 내용은 레디스 공식 문서의 Hash 형 명령어 참조
Commands | 설명 |
---|---|
HDEL key field | 지정한 해시에서 값을 삭제 |
HEXISTS key field | 해시에 필드 존재시 return 1 else 0 |
HGET key field | 지정된 값을 반환 |
HGETALL | 지정한 해시에 포함된 모든 field key - value 반환 |
HKEYS | 지정한 해시에 모든 field key 반환 |
HLEN | 필드 수를 반환 |
HMSET | 여러 값을 한번에 저장, 이미 존재하는 경우 값을 덮어 씀 |
HSET key filed value | 값 저장 |
HVALS | 지정한 필드에 모든 값을 반환 |
HSCAN key curosr [MATCH pattern][COUNT count] | 필드 집합을 반복 처리하여 필드 이름과 저장된 값의 쌍 목록을 반환 |
HINCRBY | value의 값을 지정한 숫자만큼 증가 ( 숫자에만 사용 가능 ) |
HINCRBYFLOAT | value의 값을 지정한 숫자만큼 증가 ( 숫자에만 사용 가능 ) |
Hash의 장점인 내부 인코딩의 메모리 압축을 제대로 활용하지 못함
샤드 간 데이터 분산이 어려워질 수 있다. String형 키를 사용하여 세부적으로 관리하면 확장이 쉬워진다
필드 수 증가 등으로 커졌을 경우, HDEL 수행 시간이 길어져 다른 명령어가 Block될 수 있다.
Set은 여러 값을 순서와 중복 없이 저장할 수 있다.
자세한 내용은 레디스 공식 문서의 Set 형 명령어 참조
Commands | 설명 |
---|---|
SADD key value | 값 저장 |
SCARD key | 저장된 수를 반환 |
SISMEMBER key | 포함 여부 반환 |
SPOP key [COUNT count] | 무작위 반환 후 삭제 처리, count 옵션을 지정하는 만큼 반환하고 반환한 데이터는 삭제 처리 |
SREM key value | 지정한 값을 삭제 처리 |
SSCAN key value | 반족 처리하여 value 목록 반환 |
SDIFF | 집합 간 차집합 가져오기 |
SDIFFSTORE | 집합 간 차집합 저장하기 |
SINTER | 집합간 교집합 |
SINTERSTORE | 교집합 저장하기 |
SUNION | 집합 간 합집합 |
SUNIONSTORE | 합집합 저장하기 |
각 key 마다 scoure를 가진 멤버로 구성된 하나의 집합이 매핑되며, 중복을 포함하지 않고 순서가 있는 형
Hash형과 Set형을 섞어 놓은 순서 집합이기 때문에 넓은 범위의 데이터 모델을 구현
자세한 내용은 레디스 공식 문서의 Sorted Set 형 명령어 참조
Commands | 설명 |
---|---|
ZADD | 값 저장 |
ZCARD | 저장된 수 반환 |
ZRANK | 오름차순으로 반환 |
ZREVRANK | 내림차순으로 반환 |
ZRANGE | 범위내에 있는 목록을 오름차순으로 반환 |
ZRANGESTORE | 범위내에 있는 목록을 오름차순으로 저장하고 반환 |
ZREM | 지정한 값 삭제 |
ZCOUNT | 지정한 범위에 있는 수 반환 |
ZPOPMAX | 최대인 값을 삭제하고 반환 |
ZPOPMIN | 최소인 값을 삭제하고 반환 |
ZSCORE | 지정한 key에 대한 scoure 반환 |
ZMSCORE | 여러 key에 대한 scoure 반환 |
ZSCAN | 반복 처리하여 목록 반환 |
ZMPOP | 값이 최대 or 최소인 여러 key 삭제하고 반환 |
비트 배열이라고 불리는 데이터 구조, 비트의 위치를 ID와 연결한 후 그 위치가 1 or 0인지 값을 확인하여 특정 기능의 사용 여부 등을 사용자별로 관리할 수 있습니다.
String 형으로 정의되어 있으며, 비트 연산 등 특정 용도에 특화된 보조 자료형
특정 기간 내 숫자를 세는 용도로 사용하지만 숫자가 적다면 비트맵이 희소한 상태(1로 변경된 비트가 적다)가 되기 때문에 공간 관리 측면에서 비효율적일 수 있습니다.
자세한 내용은 레디스 공식 문서의 Bitmap 형 명령어 참조
Commands | 설명 |
---|---|
GETBIT | 지정한 오프셋 비트값 반환 |
SETBIT | 지정한 오프셋 비트값 설정 |
BITCOUNT | 비트 수 가져오기 |
BITOP | 비트 연산 결과 산출 |
BITPOS | 지정한 비트의 처음 위치 가져오기 |
BITFIELD | 여러 비트 필드를 동시 조작 |
BITFIELD_RO | 읽기 전용 명령어 |
주소나 경도, 위도 등 지구상 지리적 위치 정보를 나타냄
공간 정보를 사용하여 사용자로부터 근처 가게를 소개하는 등 사용자 정보를 기반으로 다른 정보를 제시할 수 있다.
내부적으로는 Sorted Set형으로 키가 저장되어 있다.
자세한 내용은 레디스 공식 문서의 geo 형 명령어 참조
Publisher가 Subscriber에게 정보를 저장하지 않고 메시지를 전송, 채널을 구독하고 있는 구독자들은 모두 메시지를 받아 볼 수 있음
자세한 내용은 레디스 공식 문서의 pubsub 형 명령어 참조
고유한 수를 효과적으로 계산할 수 있는 확률적 계산 방법
오차가 다소 있다는 단점도 있지만, 메모리 공간을 효율적으로 사용할 수 있다는 장점도 있습니다.
방문자 수처럼 대략적인 값을알기만 하면 괜찮은 경우, 정확한 값을 알 필요가 없는 경우 활용
자세한 내용은 레디스 공식 문서의 HyperLogLog 형 명령어 참조
채팅 등과 같은 메시지 교환에도 활용할 수 있으며, 기본적으로는 강력한 메시지 처리 기능을 가진 추가형 자료구조를 사용하고 있습니다.
레디스 스트림을 사용할 수 있는 쿼리 모드에는 다음 3가지 종류가 있습니다