English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Redis 데이터 타입

Redis는 다섯 가지 데이터 타입을 지원합니다: string(문자열), hash(해시), list(리스트), set(집합) 및 zset(sorted set: 정렬된 집합)

String(문자열)

string은 redis에서 가장 기본적인 타입으로, Memcached와 완전히 동일한 타입으로 이해할 수 있습니다. 하나의 key가 하나의 value를 가집니다.

string 타입은 이진 안전합니다. 즉, redis의 string은 어떤 데이터도 포함할 수 있습니다. 예를 들어 jpg 이미지나 시리얼라이즈된 객체.

string 타입은 Redis에서 가장 기본적인 데이터 타입으로, string 타입의 값은 최대로 저장할 수 있습니다. 512MB.

온라인 예제

redis 127.0.0.1:6379> SET w3codebox "기본 튜토리얼 웹사이트"
OK
redis 127.0.0.1:6379> GET w3codebox
"기본 튜토리얼 웹사이트"

위 예제에서는 Redis의 SETGET 명령어. 키는 w3codebox에 해당하는 값은 기본 튜토리얼 웹사이트.

주의:한 키는 최대로 저장할 수 있습니다. 512MB.

Hash(해시)

Redis hash는 key=>value 쌍 집합입니다.

Redis hash는 string 타입의 field과 value의 매핑 테이블입니다. hash는 객체를 저장하는 데 특히 적합합니다.

온라인 예제

DEL w3codebox는 이전 테스트에서 사용한 키를 지우기 위해 사용되며, 그렇지 않으면 오류가 발생합니다:(에러) WRONGTYPE 키가 보관된 값의 유형이 잘못되었음에 대한 연산

redis 127.0.0.1:6379> DEL w3codebox
redis 127.0.0.1:6379> HMSET w3codebox field1 "Hello" field2 "World"
"OK"
redis 127.0.0.1:6379> HGET w3codebox field1
"Hello"
redis 127.0.0.1:6379> HGET w3codebox field2
"World"

예제에서는 Redis를 사용했습니다 HMSET, HGET 명령어,HMSET 두 개의 field=>value 쌍을 설정하면, HGET은 해당 field 에 해당하는 value.

각 hash는 저장할 수 있습니다. 232 -1 키-값 쌍(40억 이상).

List(목록)

Redis 목록은 간단한 문자열 목록으로, 삽입 순서대로 정렬됩니다.列表의 머리(왼쪽) 또는 꼬리(오른쪽)에 요소를 추가할 수 있습니다.

온라인 예제

redis 127.0.0.1:6379> DEL w3codebox
redis 127.0.0.1:6379> lpush w3codebox redis
(integer) 1
redis 127.0.0.1:6379> lpush w3codebox mongodb
(integer) 2
redis 127.0.0.1:6379> lpush w3codebox rabbitmq
(integer) 3
redis 127.0.0.1:6379> lrange w3codebox 0 10
1) "rabbitmq"
2) "mongodb"
3) "redis"
redis 127.0.0.1:6379>

목록은 최대로 저장할 수 있습니다.  232 - 1 요소 (4294967295, 각 목록은 저장할 수 있습니다.40억 이상).

Set(집합)

Redis의 Set은 string 타입의 비정렬 집합입니다.

집합은 해시 테이블을 통해 구현되었기 때문에 추가, 제거, 찾기의 복잡도는 모두 O(1)

sadd 명령어

string 요소를 key에 해당하는 set 집합에 추가합니다. 성공하면 반환 1요소가 이미 집합에 존재하면 0을 반환합니다.

sadd 키 멤버

온라인 예제

redis 127.0.0.1:6379> DEL w3codebox
redis 127.0.0.1:6379> sadd w3codebox redis
(integer) 1
redis 127.0.0.1:6379> sadd w3codebox mongodb
(integer) 1
redis 127.0.0.1:6379> sadd w3codebox rabbitmq
(integer) 1
redis 127.0.0.1:6379> sadd w3codebox rabbitmq
(integer) 0
redis 127.0.0.1:6379> smembers w3codebox
1) "redis"
2) "rabbitmq"
3) "mongodb"

주의:위 예제에서 rabbitmq이 두 번 추가되었지만, 집합 내 요소의 유일성에 따라 두 번째 추가된 요소는 무시됩니다.

집합에서 가장 큰 멤버 수는  232  - 1(4294967295, 각 집합은 저장할 수 있습니다40억 개 이상의 멤버가 있습니다).

zset(정렬된 집합: sorted set)

Redis  zset과 set과 마찬가지로 string형 요소의 집합이며, 중복된 멤버는 허용되지 않습니다.

각 요소는 double형 점수와 연결됩니다. Redis는 점수를 통해 집합의 멤버를 작은 숫자에서 큰 숫자로 정렬합니다.

zset의 멤버는 유일하지만, 점수(score)는 중복될 수 있습니다.

zadd 명령어

요소를 집합에 추가하면 집합에 존재하면 해당 score를 업데이트

zadd key score member

온라인 예제

redis 127.0.0.1:6379> DEL w3codebox
redis 127.0.0.1:6379> zadd w3codebox 0 redis
(integer) 1
redis 127.0.0.1:6379> zadd w3codebox 0 mongodb
(integer) 1
redis 127.0.0.1:6379> zadd w3codebox 0 rabbitmq
(integer) 1
redis 127.0.0.1:6379> zadd w3codebox 0 rabbitmq
(integer) 0
redis 127.0.0.1:6379> ZRANGEBYSCORE w3codebox 0 1000
1) "mongodb"
2) "rabbitmq"
3) "redis"