[Redis] 키 명령어

2020. 10. 6. 14:22Database/Redis

1. 키 명령어

명령어 설명
DEL [키...] 키들을 삭제해준다. 삭제할 키들을 공백으로 구분해서 작성해주면 되며, 실제로 삭제한 키들의 개수를 반환해준다.
DUMP [] Redis 2.6.0 이상부터 지원되는 명령어로 키에 저장된 값을 Redis에서 사용하는 포맷으로 직렬화하여 출력해준다. 직렬화된값은 RESTORE 명령으로 다시 원래 값으로 되돌릴 수 있다.
EXISTS [] 메모리에 키가 존재하는지 확인하는 명령어이다. 존재할 경우 1, 존재하지 않을 경우 0을 반환한다.
EXPIRE [] [seconds] 키에 만기시각을 설정해준다. 만기시각 설정에 성공할 경우 1, 실패할 경우 0을 반환한다.
KEYS [패턴] 패턴에 맞는 키를 찾아서 출력해준다. 아주 큰 DB에서 패턴에 맞는 키들을 찾아내면 성능에 영향을 줄 수 있기 때문에 주의해야한다. (패턴은 ?, *, [...] 기호가 들어가는 형태)
MIGRATE [호스트] [포트] [목적지DB인덱스] [timeout] Redis 2.6.0부터 지원하며 Redis 서버에서 다른 Redis 서버로 키를 옮기는 명령어이다. 내부적으로는 출발지 Redis 서버에서 DUMP+DEL, 목적지 Redis 서버에서는 RESTORE 행위가 일어난다.
MOVE [키] [목적지DB인덱스] 키를 다른 인덱스의 DB로 옮긴다. 성공 시 1, 실패 시 0을 반환한다.
OBJECT [서브명령어] [파라미터] 키와 관련된 Redis 객체의 내부를 검사해주는 명령어이다. 서브명령어의 용도에 따라 파라미터가 달라진다.

OBJECT REFCOUNT [키]는 키의 값을 참조하는 수를 구해주며, OBJECT ENCODING [키]는 키값의 인코딩 방식을 보여준다. OBJECT IDLETIME [키]는 키가 유효 상태였던 시간을 보여준다.
PERSIST [키] 만기시각을 없애는 명령어이다. 성공 시 1, 실패 시 0을 반환한다.
PEXPIRE [키] [milliseconds] Redis 2.6.0부터 지원하며 키에 만기시각을 밀리초 단위로 설정해준다. 성공 시 1, 실패 시 0을 반환한다.
PEXPIREAT [키] [milliseconds-timestamp]
PTTL [키] Redis 2.6.0부터 지원하며 해당 키가 만기되지까지 남은 밀리초 값을 반환한다. 실패할 경우 -1을 반환한다.
RANDOMKEY 현재 DB에서 랜덤한 키를 반환해준다. 빈 DB의 경우 NULL을 반환한다.
RENAME [키] [새키] 키 이름을 변경해준다. 이미 존재하는 새 키가 있다면 덮어씌운다. 성공 시 OK, 실패 시 에러메시지를 반환한다.
RENAMENX [키] [새키] 키 이름을 변경해준다. 이미 존재하는 새 키라면 실패한다. 성공 시 1, 실패 시 0을 반환한다.
RESTORE [키] [TTL] [Serialized-value] DUMP 명령으로 구한 직렬화된 값을 다시 메모리 상에 올린다. TTL은 만기시각 초단위 값으로 0일시 만기시작 설정을 안하게 된다. Serailized-value는 DUMP 명령으로 구한 직렬화된 값이다. 성공 시 OK, 실패 시 에러메시지를 반환한다.
TTL [키] 해당 키가 만기되기까지 남은 초 값이다. 만기값을 구하지 못할 경우 -1을 반환한다.
TYPE [키] 해당 키의 데이터형을 구해준다. 못 구한 경우 None을 반환한다.

 

 

 

2. 정렬

List, Set, Sorted Set형의 키에 포함된 요소들을 파라미터들로 정해준 조건대로 정렬해서 보여준다.

SORT [키] [BY 패턴] [LIMIT offset count] [GET 패턴 ...] [ASC/DESC] [ALPHA] [STORE 목적지]

1) [BY 패턴]

이 키 외의 다른 키값들을 이용하여 이 키의 요소들을 정렬하고 싶을 때 사용한다.

 

예를 들어 mylist라는 List형의 키에 "kweok", "kim", "park", "jung", "lee" 라는 요소들이 있고, count_kim이라는 String형의 키에는 100, count_lee이라는 String형의 키에는 82, count_park이라는 String형의 키에는 55, count_jung이라는 String형의 키에 47 이라는 값이 있을 때, mylist 요소들을 count_*에 해당하는 키들의 값에 의해 정렬하고 싶다면 'sort mylist by count_*' 명령어로 실행해주면된다. 정렬을 하지 않을 경우 BY nosort로 설정해주면 된다.

2) [LIMIT offset count]

정렬 결과에서 일부만 보고 싶을 때 offset count 값을 설정해준다.

3) [GET 패턴 ...]

해당 요소를 키 이름에 포함하고 있는 키의 값을 출력하고 싶을 때 사용한다. GET은 여러 필드를 표현하기 위해 여러번 사용이 가능하다. GET #을 이용하면 원래 요소의 값이 보여진다.

4) [ASC/DESC]

정렬 결과를 오름차순으로 할지 내림차순으로 할지 결정한다.

5) [ALPHA]

정렬은 기본적으로 정수와 실수 기준으로 하게 되며 수가 아닌 경우 0으로 처리된다. 이때 문자열 기준으로 정렬하고 싶을 경우 ALPHA를 포함시키면 된다.

6) [STORE 목적지]

정렬 결과를 출력하지 않고 목적지로 정해준 키에 넣어준다.

 

 

 

3. 주의할 명령어

Redis는 Single Thread로 동작한다. (정확하게는 명령어를 처리하는 쓰레드가 한 개) 따라서 만약 실행이 오래 걸리는 명령어 한 개가 쓰레드를 잡아먹는다면, 나머지 명령어는 밀리게 된다. 이 경우도 장애 상황으로 이어질 수 있다.

명령어 설명
KEYS * Redis의 모든 키를 출력하는 명령어이기에, 메모리에 저장된 값이 많을 때 이 명령어를 사용하게 된다면 문제가 생길 수 있다.

[참고] kerocat.tistory.com/1

 

 

728x90

'Database > Redis' 카테고리의 다른 글

[Redis] 데이터 유형별 명령어  (0) 2020.10.06
[Redis] 서버, 연결 명령어  (0) 2020.10.06
[Redis] redis.conf 설정 파일  (0) 2020.10.06
[Redis] 실습용 Redis 서버 설치  (0) 2020.10.06