티스토리 뷰
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