Redis command

From 탱이의 잡동사니
Jump to navigation Jump to search

Overview

Redis command 내용 정리

DEL

지정된 키를 삭제한다.

127.0.0.1:6379> help DEL

  DEL key [key ...]
  summary: Delete a key
  since: 1.0.0
  group: generic

GET

지정된 키 값을 가져온다.

127.0.0.1:6379> help GET

  GET key
  summary: Get the value of a key
  since: 1.0.0
  group: string

SET 명령어 사용시, 만약 Key 에 이미 다른 값이 설정되어 있다면 타입에 상관없이 덮어쓰기가 된다. Any previous time to live associated with the key is discarded on successful SET operation.

Example

redis>  GET mykey
"Hello"

INFO

Redis 서버 설정 정보를 확인할 수 있다.

127.0.0.1:6379> help INFO

  INFO [section]
  summary: Get information and statistics about the server
  since: 1.0.0
  group: server

Example

> INFO
redis_version:2.4.18
redis_git_sha1:00000000
redis_git_dirty:0
arch_bits:64
...

MONITOR

REDIS 에서 수행되는 명령어를 실시간으로 모니터링한다.

127.0.0.1:6379> help monitor

  MONITOR -
  summary: Listen for all requests received by the server in real time
  since: 1.0.0
  group: server

Example

redis 127.0.0.1:6379> monitor
OK
1465549016.028126 "monitor"

1465549888.174607 (db 10) "SELECT" "10"
1465549888.193430 (db 10) "KEYS" "accounts:127.0.0.1-user1:accountinformation"
1465549888.193779 (db 10) "HGETALL" "accounts:127.0.0.1-user1:accountinformation"
1465549888.224193 (db 10) "KEYS" "voicemail:127.0.0.1-user1:message*"
1465549892.531991 (db 10) "SELECT" "10"
1465549892.547614 (db 10) "KEYS" "accounts:127.0.0.1-user1:accountinformation"
1465549892.547991 (db 10) "HGETALL" "accounts:127.0.0.1-user1:accountinformation"
1465549892.578356 (db 10) "KEYS" "voicemail:127.0.0.1-user1:message*"
1465549892.590838 (db 10) "KEYS" "accounts:127.0.0.1-user1:accountinformation"
1465549892.591206 (db 10) "HGETALL" "accounts:127.0.0.1-user1:accountinformation"
1465549892.621536 (db 10) "KEYS" "voicemail:127.0.0.1-user1:message*"
1465549892.622748 (db 10) "HMSET" "mailboxchanges:127.0.0.1:user1" "mboxname" "user1" "old" "0" "new" "0"
...

SET

지정한 키에 값을 지정한다.

127.0.0.1:6379> help SET

  SET key value [EX seconds] [PX milliseconds] [NX|XX]
  summary: Set the string value of a key
  since: 1.0.0
  group: string

Example

redis>  SET mykey "Hello"
OK

SADD, SMEMBERS

SADD key member [member ...] 
SMEMBERS key

지정된 key에 member 들을 Sets 타입으로 add/show 한다.

redis 127.0.0.1:6379[1000]> SADD queues "a684cf64-685c-484c-8157-a53db7e7cef7"
(integer) 1
redis 127.0.0.1:6379[1000]> SADD queues "f9c7e9cf-8415-42d7-a6cd-82fa95410b33"
(integer) 1
redis 127.0.0.1:6379[1000]> SADD queues "e5631cf8-6898-486a-beac-36087c917b8a"
(integer) 1

redis 127.0.0.1:6379[1000]> SMEMBERS queues
1) "a684cf64-685c-484c-8157-a53db7e7cef7"
2) "e5631cf8-6898-486a-beac-36087c917b8a"
3) "f9c7e9cf-8415-42d7-a6cd-82fa95410b33"

ZSET

ZREMRANGEBYSCORE


SUNION

여러개의 결과 데이터를 조합하여 중복된 데이터를 제외한 결과를 리턴한다.

key1 = {a,b,c,d}
key2 = {c}
key3 = {a,c,e}
SUNION key1 key2 key3 = {a,b,c,d,e}

SINTER

여러개의 결과 데이터를 조합하여 공통적으로 속해있는 결과만을 리턴한다.

key1 = {a,b,c,d}
key2 = {c}
key3 = {a,c,e}
SINTER key1 key2 key3 = {c}

비어있는(empty) 혹은 존재하지 않는 키와의 SINTER 는 항상 empty list 를 반환한다.

Example

redis>  SADD key1 "a"
(integer) 1
redis>  SADD key1 "b"
(integer) 1
redis>  SADD key1 "c"
(integer) 1
redis>  SADD key2 "c"
(integer) 1
redis>  SADD key2 "d"
(integer) 1
redis>  SADD key2 "e"
(integer) 1
redis>  SINTER key1 key2
1) "c"

SCAN, SSCAN, ZSCAN, HSCAN

KEYS 와 비슷한 기능을 수행하지만 KEYS와는 달리 Table lock 을 생성하지 않는다.

SCAN cursor [MATCH pattern] [COUNT count]
SSCAN key cursor [MATCH pattern] [COUNT count]
ZSCAN key cursor [MATCH pattern] [COUNT count]
HSCAN key cursor [MATCH pattern] [COUNT count]

얼핏보기에는 KEYS 의 문제점을 모두 해결한 것 같지만, 다음과 같은 한계를 가진다.

  • 기본적으로 SCAN의 경우 table 의 한 블럭을 가져오는 것이라서, 여기에 갯수가 많으면 시간이 많이 걸릴 수도 있다(다만, re-hashing 테이블이 bitmasking 크기만큼 커지므로, 한 블럭이 극단적으로 커질 가능성은 높지 않다).
  • SET/SORTED_SET/HASH 의 내부 구조가 hash table 이나 skiplist 가 아닐 경우(ziplist 로 구현되어 있을 경우), 한 컬렉션의 모든 데이터를 가져오므로, KEYS 명령과 비슷한 문제가 그대로 발생할 수 있다.
  • 명령의 옵션으로 count 값을 지정할 수 있지만, 정확히 그 갯수를 보장하지는 않는다.
  • 순회가 시작(cursor 값을 0으로 지정한 SCAN 명령)된 이후에 추가된 항목은 전체 순회(full iteration; scan 명령의 반환된 cursor 값이 0)가 끝날 때까지 반환되지 않는다(Cursor 가 이미 지나갔으므로).
  • HASH table 이 확장/축소/re-hashing 될 때 다시 스캔하지 않기 때문에 같은 항목이 여러번 반환될 수 있다. 반환된 키 값으로 다른 명령을 실행하려면 주의해야 한다.

SLAVEOF

Slave 설정을 변경한다.

127.0.0.1:6379> help SLAVEOF

  SLAVEOF host port
  summary: Make the server a slave of another instance, or promote it as master
  since: 1.0.0
  group: server

slave 설정시, 모든 데이터는 master 와 동기화 된다. 즉, 동기화 하기 전에 slave 쪽에 중복되는 데이터가 있다면, master 쪽의 데이터로 덮어써지게 된다.

Example

$ redis-cli -n 10 slaveof 192.168.250.10 6379

See also

RENAME

Key 를 업데이트/변경 한다.

RENAME key newkey 

Reference

<references />