본문 바로가기
Web 프로그래밍/Redis

[Redis] Keys 명령어 설명 및 예제

데브업 | 2024. 5. 30.

 

Keys 관련 명령어 예제

 

- KEYS

설명(KEYS) : 패턴에 일치하는 모든키를 반환합니다. 이 연산의 시간복잡도는 O(N)이지만 시간은 상당히 낮다. 레디스는 40밀리 초 내에 백만개의 데이터를 스캔할 수 있다.

주의 : KEYS 명령어는 조심스럽게 사용해야 하며 대규모 데이터베이스에서 실행되면 성능이 저하 될 수 있다.

시간복잡도 : O(N)

redis-cli > KEYS pattern

PATTERN : 

  • h?llo => hello, hallo, hxllo
  • h*llo => hllo, heeeello, haaaallo
  • h[ae]lo => hello, hallo, hillo (X)
  • h[^e]llo => hallo, hillo, hello (X)
  • h[a-b]llo => hallo, hbllo
 redis > MSET one 1 two 2 three 3 four 4
 "OK"
 redis > KEYS *o*
 1) "one"
 2) "two"
 3) "four"

 redis > KEYS t??
 1) "two"
 redis > KEYS *
 1) "one"
 2) "two"
 3) "three"
 4) "four"

 

 

- DEL

설명(DEL) : 특정요소의 키를 제거합니다.

시간복잡도 : O(N) 여기서 N은 제거할 키 갯수

redis-cli > DEL key [key ...]

 

 redis > MSET one 1 two 2 three 3 four 4
 "OK"
 redis > DEL one two
 (integer) 2

 

 

- EXISTS

설명(EXISTS) : 키가 있는지 확인. 3.0.3 이상부터 단일이 아닌 여러개의 키를 지정할 수 있다.

설명(RPUSHX) : 키가 이미 있고 목록을 보유하고 있는 경우에만 목록의 마지막에 값을 삽입합니다.

시간복잡도 : O(1)

redis-cli > EXISTS key [key ...]

 

 redis > SET key "hello"
 "OK"
 redis > EXISTS key
 (integer) 1
 redis > EXISTS key1
 (integer) 0

 

 

- EXPIRE, PEXPIRE, PERSIST

설명(EXPIRE) : 리스트 키에 타임아웃을 초 단위로 설정합니다. PERSIST 명령어로 타임아웃을 해제 할 수 있습니다.

설명(PEXPIRE) : 리스트 키에 타임아웃을 밀리 초 단위로 설정합니다. PERSIST 명령어로 타임아웃을 해제 할 수 있습니다.

설명(PERSIST) : 리스트 키에 타임아웃을 해제합니다.

시간복잡도 : O(1)

redis-cli > EXPIRE key seconds

redis-cli > PERSIST key

 

 redis > SET key "World"
 "OK"
 redis > EXPIRE key 10
 (integer) 1
 redis > TTL key
 (integer) 10
 redis > PERSIST key
 (integer) 1
 redis > TTL key
 (integer) -1

 

 

- DUMP, RESTORE

설명(DUMP) : 키에 저장된 값을 Redis 특정 형식으로 직렬화 하여 사용자에게 반환 

설명(RESTORE) : DUMP로 직렬화 된 값을 역 직렬화하여 얻은 값과 연돤되 키를 작성

시간복잡도 : O(N)

직렬화 형식의 의미론적 특징

  • 오류가 감지되는지 확인하는데 사용되는 64비트 체크섬이 포함. RESTORE 명령은 직렬화 된 값을 사용하여 키를 합성하기 전에 체크섬을 확인
  • 값은 RDB에서 사용하는 것과 동일한 형식으로 인코딩 됌
  • RDB버전은 일련화 된 값 내에 인코딩되므로 호환되지 않는 RDB형식의 다른 Redis 버전은 처리하지 않음

redis-cli > DUMP key 

redis-cli > RESTORE key ttl serialized-value [REPLACE] 

 

 redis > SET key 10
 "OK"
 redis > DUMP key
 "\u0000\xC0\n\b\u0000ײ\xBB\xFA\xA7\xB7\xE9\x83"
 redis > DEL key
 (integer) 1
 redis > RESTORE key 0 "\u0000\xC0\n\b\u0000ײ\xBB\xFA\xA7\xB7\xE9\x83"
 "OK"

 

 

- EXPIREAT, PEXPIREAT

설명(EXPIREAT) : EXPIRE 와 전부 동일하지만 초가 아닌 Unixstamp 만 차이가 있다. 주어진 키가 앞으로 주어진 시간에 만료되도록 지정하는데 직접 사용이 가능

설명(EXPIREAT) : EXPIREAT 와 전부 동일하지만 Unixstamp 초가 아닌 밀리초만 차이가 있다. 주어진 키가 앞으로 주어진 시간에 만료되도록 지정하는데 직접 사용이 가능

시간복잡도 : O(1)

redis-cli > EXPIREAT key timestamp

redis-cli > PEXPIREAT key millieseconds-timestamp 

 

 redis > SET key "hello"
 "OK"
 redis > EXISTST key
 (integer) 1
 redis > EXPIREAT key 1293840000
 (integer) 1
 redis > EXISTS key

 

 

 

- MOVE

설명(MOVE) : 특정 키를 다른 데이터베이스로 옮긴다.

시간복잡도 : O(1)

redis-cli > MOVE key db

 

 redis > SET key 1
 (integer) 1
 redis > MOVE key 1
 (integer) 1
 redis > GET key 
 (nil)
 redis > SELECT 1
 "OK"
 redis > GET key
 "1"

 

 

- TTL, PTTL

설명(TTL) :해당 키에 타임아웃이 얼마나 남아 있는지 초단위로 반환한다.

설명(PTTL) :해당 키에 타임아웃이 얼마나 남아 있는지 밀리초단위로 반환한다.

-2를 반환하면 값이 없는 것이고, -1을 반환하면 기한이 없다.

시간복잡도 : O(1)

redis-cli > TTL key

redis-cli > PTTL key

 

 redis > RPUSH list 1 2 3 4 5 6 7 8 9 10
 (integer) 10
 redis > LTRIM list 5 -1
 "OK"
 redis > LRANGE list 0 -1
 1) "6"
 2) "7"
 3) "8"
 4) "9"
 5) "10"


 

 

- TYPE

설명(TYPE) : 키에 저장된 값의 형태를 캐릭터 라인표현으로 돌려줍니다. 리턴되는 유형은 string, list, set, zset, hash 입니다.

시간복잡도 : O(1)

redis-cli > TYPE key

 

 redis > SET key1 "value"
 "OK"
 redis > LPUSH key2 "value"
 (integer) 1
 redis > SADD key3 "value"
 (integer) 1
 redis > TYPE key1
 "string"
 redis > TYPE key2
 "list"
 redis > TYPE key3
 "set"

 

 

 

- RENAME, RENAMENX

설명(RENAME) : 키의 이름을 변경. 키 값이 있으면 덮어씀

설명(RENAMENX) : 키의 이름을 변경. 단 키 값이 이미 있으면 0을 반환

시간복잡도 : O(1)

redis-cli > RENAME key newkey

redis-cli > RENAMENX key newkey