레디스 GETEX

Lediseu Getex



Redis는 인메모리 캐시, 데이터베이스, 시계열, 스트림 엔진, 메시지 브로커 등으로 사용되는 키-값 데이터 저장소입니다. 효율적인. 또한 O(1) 및 O(log(N))과 같이 시간 복잡도가 낮기 때문에 쿼리 속도가 매우 빠릅니다. Redis 키는 문자열, 집합, 해시, 정렬된 집합 및 목록과 같은 다양한 데이터 구조를 보유할 수 있습니다.

일반적으로 GET 및 SET 명령은 지정된 Redis 키에 저장된 문자열 유형 값을 저장하고 검색하는 데 사용됩니다. 이 두 명령은 일정한 시간 복잡도로 작동합니다.







또한 GETEX 명령을 사용하여 지정된 키에 저장된 문자열 값을 읽을 수 있습니다. 그러나 이 명령은 병렬 쓰기 작업과도 관련이 있습니다. 이 가이드는 GETEX 명령 구문, 옵션 및 사용 사례에 중점을 둡니다.



Redis 키의 TTL

TTL(Time to Live) 값은 주어진 데이터 조각의 만료 시간입니다. 일반적으로 TTL은 데이터베이스 행과 연관될 수 있습니다. Redis 키로 시간 초과를 설정할 수도 있습니다. 따라서 Redis 클라이언트는 주어진 키를 데이터 저장소에서 사용할 수 있는 남은 시간(초)을 확인할 수 있습니다. Redis는 주어진 키의 TTL(Time to Live) 값을 확인하는 TTL 명령을 제공합니다. 지정된 키와 연결된 시간 초과가 없으면 TTL 명령은 -1을 반환합니다. 다음 섹션에서 TTL 명령을 사용하여 주어진 키의 남은 시간을 확인합니다.



GETEX 명령

강조 표시된 대로 GETEX 명령은 지정된 키의 만료 시간을 설정하는 데 사용할 수 있다는 점을 제외하면 GET 명령과 더 유사합니다. 또한 명령 옵션은 주어진 키에서 시간 초과 값을 제거할 수 있습니다. GETEX 명령 구문은 다음과 같습니다.





GETEX 키 [ EX timeout_in_seconds | PX timeout_in_milliseconds | EXAT timeout_in_unix-time-seconds | PXAT timeout_in_unix-time-milliseconds | 지속 ]

열쇠: 이것은 문자열 값을 가리키는 키입니다.

다음 선택적 인수를 사용하여 시간 초과를 초 또는 밀리초 단위로 설정할 수 있습니다.



전: 이것은 주어진 키의 만료 시간을 초 단위로 설정합니다.

PX: 키 제한 시간 값은 밀리초 단위로 설정됩니다.

또한 다음 명령 옵션을 사용하여 UNIX 타임스탬프 값을 초 또는 밀리초 단위로 지정할 수 있습니다. EXAT 그리고 PXAT :

EXAT: 만료 시간은 UNIX 타임스탬프 형식으로 설정되며 타임스탬프는 초 단위입니다.

PXAT: 주어진 Redis 키에 대한 시간 초과는 밀리초 단위의 UNIX 타임스탬프로 설정됩니다.

지속: 이를 지정하면 지정된 키와 연결된 TTL(Time to Live) 값을 제거할 수 있습니다.

GETEX 명령은 지정된 키의 값을 반환합니다. 이 명령은 문자열 유형 값에만 작동하지만 해시, 목록, 정렬된 집합 등에는 작동하지 않습니다. 문자열이 아닌 값과 연결된 키를 지정하면 명령이 오류를 반환합니다. 또한 키가 이미 만료되었거나 존재하지 않는 경우 명령은 다음을 반환합니다. 무.

다음 섹션에서는 GETEX 명령의 실제 사용을 다룰 것입니다.

사용 사례 — 비밀번호 복구/OTP를 위한 임시 재설정 링크 또는 PIN 코드 생성

웹 호스팅 회사는 등록된 사용자를 위한 비밀번호 복구 기능을 제공하고 있습니다. 보안 조치로 사용자에게 새 URL 링크를 보내며 이 링크는 5분 이내에 만료됩니다. 이 회사는 오랫동안 Redis 데이터 저장소를 사용해 왔으며 GETEX 명령을 사용하여 주어진 사용자의 TTL(Time to Live) 값을 설정합니다.

user_id가 1000인 사용자가 비밀번호 복구를 요청했다고 가정해 보겠습니다. 따라서 복구 URL을 키에 저장할 수 있습니다. 복구URL:사용자 ID:1000 . SET 명령을 사용하여 다음과 같이 복구 URL을 저장할 수 있습니다.

세트 복구URL:사용자 ID: 1000 'https://abc.com/recovery/userid=1000,key=sdfiuoe3290e9rjs'

키에 문자열 URL이 제대로 저장되었는지 확인해보자 복구URL:사용자 ID:1000. 다음과 같이 GETEX 명령을 사용할 수 있습니다.

getex RecoveryURL:사용자 ID: 1000

이전 명령의 출력은 다음과 같습니다.

GETEX 명령 대신 GET 명령을 사용한 경우 출력은 동일합니다.

TTL 명령을 사용하여 만료 시간이 이 키와 연결되어 있는지 확인합니다.

Ttl RecoveryURL:사용자 ID: 1000

예상대로 TTL 명령에 의해 -1이 반환되었습니다. 이는 지정된 키와 관련된 만료 시간이 없음을 의미합니다.

이 예에 따라 호스팅 회사는 복구 URL에 대해 5분 제한 시간을 설정해야 합니다. 그래서 우리는 명령 옵션. 5분은 300초이므로 다음과 같이 GETEX 명령을 구성할 수 있습니다.

getex RecoveryURL:사용자 ID: 1000 500

TTL 명령을 몇 번 실행하여 데이터 저장소에 키가 남아 있는 시간을 조사해 보겠습니다.

예상대로 시간이 줄어들고 결국 복구URL:사용자 ID:1000 키가 제거됩니다. 다음은 5분 후의 출력입니다.

-2가 명령에 의해 반환되었습니다. 이는 키가 만료되어 데이터 저장소에서 삭제되었음을 의미합니다.

경우에 따라 지정된 키와 연결된 시간 초과 값을 제거해야 할 수도 있습니다. 따라서 PERSIST 명령 옵션을 사용하여 지정된 키와 관련된 TTL 값을 삭제할 수 있습니다.

다른 샘플 키를 만들고 여기에 문자열 값을 할당해 보겠습니다. 이 경우 TTL 값을 밀리초 단위로 지정합니다. PX 옵션.

세트 KeytoTestPersist '60초 이내에 만료됩니다.' PX 50000

다음으로 남은 시간을 다음과 같이 확인합니다.

예상대로 TTL이 감소하고 있습니다. 다음과 같이 PERSIST 옵션을 사용하여 GETEX 명령을 호출해 보겠습니다.

getex KeytoTestPersist 지속

이상적으로는 이 키와 연결된 TTL을 제거합니다. 키에 대한 TTL을 살펴보겠습니다. KeytoTestPersist.

TTL 명령은 -1을 반환했으며 이는 키와 연결된 TTL이 없음을 의미합니다. KeytoTestPersist.

유사하게, 지텍스 명령을 사용하여 UNIX 타임스탬프에서 키의 만료 시간을 설정할 수 있습니다.

결론

요약하면 Redis GETEX 명령은 GET 명령처럼 주어진 키에 저장된 문자열 값을 검색하는 데 사용할 수 있습니다. GETEX 명령과의 유일한 차이점은 주어진 키에 대한 만료 시간 설정 및 제거를 지원한다는 것입니다. 만료 시간을 초, 밀리초 및 UNIX 타임스탬프 초 또는 밀리초 단위로 지정하는 몇 가지 선택적 인수를 지원합니다. 설명된 대로 이 명령은 지정된 키에 대해 연결된 TTL을 제거하는 PERSIST 옵션을 제공합니다. 전반적으로 GETEX 명령은 일정한 시간 복잡도로 작동합니다.