Key-Value 구조(다양한 데이터 구조 지원)로 저장되는 인메모리 데이터 구조 저장소
SET user:email alex@example.com
GET user:email
SET <key> <value>
: key
에 value
문자열 데이터를 저장, "
으로 공백 구분GET <key>
: key
에 저장된 문자열 반환INCR, DECR
SET user:count 1
INCR user:count
DECR user:count
INCR key
: key
에 저장된 데이터를 1 증가DECR key
: key
에 저장된 데이터를 1 감소MSET, MGET
MSET user:name alex user:email alex@example.com
MGET user:name user:email
MSET key value [key value …]
: key value
의 형태로 주어진 인자들을 각 key
에 value
를 저장MGET key [key]
: 주어진 모든 key
에 해당하는 데이터를 반환.LPUSH, RPUSH, LPOP, RPOP
LPUSH user:list alex # [alex]
LPUSH user:list brad # [brad, alex]
RPUSH user:list chad # [brad, alex, chad]
RPUSH user:list dave # [brad, alex, chad, dave]
LPOP user:list # brad
RPOP user:list # chad
LPUSH key value
: key
에 저장된 리스트의 앞쪽에 value
를 저장RPUSH key value
: key
에 저장된 리스트의 뒤쪽에 value
를 저장LPOP key
: key
에 저장된 리스트의 앞쪽(왼쪽)에서 값을 반환 및 제거RPOP key
: key
에 저장된 리스트의 뒤쪽(오른쪽)에서 값을 반환 및 제거LLEN, LRANGE
LLEN user:list
LRANGE user:list 0 3
LRANGE user:list 0 -1
LLEN key
: key
에 저장된 리스트의 길이를 반환LRANGE key start end
: key
의 start
부터 end
까지 원소들을 반환SADD, SREM, SMEMBERS, SISMEMBER, SCARD
SADD user:java alex # [alex]
SADD user:java brad # [alex, brad]
SADD user:java chad # [alex, brad, chad]
SREM user:java alex # [brad, chad]
SMEMBERS user:java # [alex, brad, chad]
SISMEMBER user:java brad # true
SISMEMBER user:java dave # false
SADD key value
: key
에 저장된 집합에 value
를 추가SREM key value
: key
에 저장된 집합의 value
를 제거SMEMBERS key
: key
에 저장된 집합의 모든 원소를 반환SISMEMBER key value
: key
에 저장된 집합에 value
가 존재하는지 반환SCARD key
: key
에 저장된 집합의 크기를 반환SINTER, SUNION, SINTERCARD
SADD user:java "Alice"
SADD user:java "Bob"
SADD user:java "Charlie"
SADD user:python "Bob"
SADD user:python "David"
SADD user:python "Alice"
SINTER user:java user:python # [Alice , Bob]
SUNION user:java user:python # [Alice, Bob, Charlie, David]
SINTERCARD 2 user:java user:python # 갯수 반환 : 2 ==> [Alice, Bob]
SINTER key1 key2
: key1
과 key2
에 저장된 집합들의 교집합의 원소들을 반환SUNION key1 key2
: key1
과 key2
에 저장된 집합들의 합집합의 원소들을 반환SINTERCARD number key1 [key2 ...]
: number
개의 key
에 저장된 집합들의 교집합의 크기(갯수)를 반환데이터 구조가 셋(Set)을 기반으로 중복을 허용하지 않고 유일한 값만 반환
HSET, HGET, HMGET, HGETALL, HKEYS, HLEN
HSET user:1000 name "Alice"
HSET user:1000 age 30
=> user:1000 해시에 name 필드에 "Alice"를, age 필드에 30을 저장
HGET user:1000 name => 결과: Alice
HMGET user:1000 name age => ["Alice", "30"]
HGETALL user:1000 => ["name", "Alice", "age", "30"]
HKEYS user:1000 => ["name", "age"]
HLEN user:1000 => 2 (name 과 age 2개 이므로)
HSET key field value [field value]
: 해시의 필드(field)에 값을 설정HGET key field
: 해시의 특정 필드에 저장된 값을 가져옴. 없는 field 의 경우 null
.HMGET key field [field]
: 해시에서 여러 필드의 값을 한 번에 가져옴HGETALL key
: 해시의 모든 필드와 값을 가져옴HKEYS key
: 해시의 모든 필드(key)를 가져옴HLEN key
: 해시의 필드 개수를 반환ZADD, ZINCRBY, ZRANK, ZRANGE, ZREVRANK, ZREVRANGE
ZADD user:ranks 10 alex
ZADD user:ranks 9 brad 11 chad
ZADD user:ranks 8 dave
=>
{
"alex": 10,
"brad": 9,
"chad": 11,
"dave": 8
}
ZINCRBY user:ranks 2 alex
=>
{
"alex": 12,
"brad": 9,
"chad": 11,
"dave": 8
}
ZRANK user:ranks alex => 0 (alex의 현재 순위는 1위)
ZRANGE user:ranks 0 2
=> ["dave", "brad", "chad"] (점수가 낮은 0 ~ 2번쨰 가져옴)
ZREVRANK user:ranks alex
=> 0 (alex의 점수가 제일 높기 떄문)
ZREVRANGE user:ranks 0 1
=> ["alex", "chad"]
ZADD key score member [score member ...]
: key
의 Sorted Set에 score
를 점수로 가진 member
를 추가, 이미 있는 member
의 경우 새로운 score
를 설정ZRANK key member
: key
의 Sorted Set의 member
의 순위를 오름차순 기준으로 0에서 부터 세서 반환ZRANGE key start stop
: key
의 Sorted Set의 member
들을 start
부터 stop
순위까지 오름차순 기준으로 반환ZREVRANK key member
: key
의 Sorted Set의 member
의 순위를 내림차순 기준으로 0에서 부터 세서 반환ZREVRANGE key start stop
: key
의 Sorted Set의 member
들을 start
부터 stop
순위까지 내림차순 기준으로 반환ZINCRBY key increment member
: key
의 Sorted Set의 member
의 score
를 increment
만큼 증가 (음수를 전달하면 감소)DEL, EXPIRE, EXPIRETIME
SET somekey "to be deleted"
DEL somekey
SET expirekey "to be expired"
EXPIRE expirekey 5
EXPIRETIME expirekey
DEL key
: key
(와 저장된 데이터)를 제거EXPIRE key seconds
: key
의 TTL(유효시각)을 seconds
로 설정, seconds
초가 지나면 key
제거EXPIRETIME key
: key
가 만료되는 시각을 Unix Timestamp로 반환저장된 모든 Key를 확인
KEYS *
모든 Key를 제거
FLUSHDB