Redis EXPIRE 해시 키

Redis Expire Haesi Ki



Redis 해시는 JSON 개체, Java HashMap 또는 Python 사전과 훨씬 유사한 특수한 종류의 데이터 유형입니다. 또한 도메인 개체를 모델링하는 데 사용할 수 있는 필드-값 쌍의 모음입니다. Redis 해시 데이터 구조는 각 해시 키가 최대 40억 개의 필드-값 쌍을 저장할 수 있는 메모리 효율성이 매우 높습니다. 가장 중요한 것은 HSET, HGET, HMGET 등과 같은 기본 해시 연산이 일정한 시간 복잡도에서 작동한다는 것입니다.


Redis 해시 키에는 TTL(무한 시간)이 있습니다. 즉, DEL과 같은 명령을 사용하여 명시적으로 삭제됩니다. 이 기사에서는 EXPIRE 명령을 사용하여 Redis 해시에 대한 TTL을 설정하는 데 중점을 둘 것입니다.







Redis EXPIRE 명령

EXPIRE 명령은 Redis 해시, 집합, 목록 등의 지정된 키에 시간 초과를 설정하는 데 사용됩니다. 시간 초과가 만료되면 Redis 키는 데이터베이스에서 삭제됩니다. 가장 중요한 것은 키의 내용이 삭제되거나 덮어쓰기될 때까지 타임아웃이 지워지지 않는다는 것입니다. 키와 연결된 값을 변경해도 만료 시간에는 영향을 미치지 않습니다.



EXPIRE 명령의 구문은 다음과 같습니다.



EXPIRE 키 expiry_time_seconds [ NX | GX | GT | LT ]


열쇠: 시간 초과를 설정해야 하는 해시, 목록 또는 집합의 키입니다.





만료_시간_초: 시간 초과 값(초)입니다.

EXPIRE 명령에는 몇 가지 선택적 인수가 허용됩니다.



NX: 지정된 키에 이미 만료가 없는 경우에만 시간 초과 값이 설정됩니다.

더블 엑스: 지정된 키에 기존 시간 초과 값이 있으면 새 만료가 설정됩니다.

GT: 새 시간 초과 값이 기존 값보다 크면 새 만료가 설정됩니다.

LT: 기존 값이 새 값보다 크면 새 시간 초과 값이 설정됩니다.

가장 중요한 것은 EXPIRE 명령이 일정한 시간 복잡도에서 작동한다는 것입니다. 명령 실행이 성공하면 정수 1이 반환됩니다. 잘못된 인수 또는 존재하지 않는 키 때문에 작업이 실패하면 0이 반환됩니다.

해시에 EXPIRE 명령을 사용하여 다음 섹션에 표시된 대로 만료 시간을 설정합니다.

EXPIRE 명령을 사용하여 Redis 해시 만료

사용자별 세션 정보가 Redis 해시에 저장되어 있다고 가정해 보겠습니다. 세션:ID:1000:사용자:10. HMSET 명령을 사용하여 다음과 같이 여러 필드-값 쌍으로 Redis 해시를 생성할 수 있습니다.

hmset 세션:ID: 1000 :사용자: 10 사용자 이름 '재' 쿠키 '예' 비밀번호 '389Ysu2'


HGETALL 명령을 사용하여 생성된 해시를 검사해 보겠습니다.

hgetall 세션:id: 1000 :사용자: 10



또한 사용자가 60초 이상 유휴 상태인 경우 세션은 10초 후에 만료됩니다. 세션 만료는 세션 정보를 저장하는 해시의 만료 시간을 설정하여 이루어집니다.

EXPIRE 명령을 다음과 같이 사용할 수 있습니다.

세션 만료:ID: 1000 :사용자: 10 10


언급한 대로 제한 시간 값은 10초로 설정됩니다.


예상대로 반환 값은 1이며 해시에 대해 TTL이 성공적으로 설정되었음을 의미합니다. Redis 스토어에서 해시 키가 제거되기까지 남은 시간을 확인해보자. TTL 명령은 다음과 같이 사용할 수 있습니다.

ttl 세션:id: 1000 :사용자: 10



출력에 표시된 것처럼 해시가 자동으로 제거되기까지 3초가 남습니다. 10초 후 TTL 명령 출력은 다음과 같습니다.


-2 정수 응답이 표시되므로 해시가 존재하지 않습니다.

만료 시간의 존재를 기반으로 시간 초과 설정

EXPIRE 명령은 NX 및 XX 인수를 허용하여 지정된 해시에 대한 만료 여부를 기반으로 새 시간 초과를 설정합니다. 다음을 사용하여 새 해시를 생성해 보겠습니다. 타임아웃 없음 열쇠 .

hmset noTimeOut 이름 '테스트'


이전 해시에 새로운 만료를 설정해 보겠습니다. 또한 EXPIRE 명령에도 XX 인수를 전달합니다.

만료 시간 초과 열 다섯 더블 엑스


우리가 지정하기 때문에 더블 엑스 옵션을 선택하면 만료 시간이 설정되지 않습니다. 지정된 해시 키와 연결된 기존 시간 제한이 없는 경우 XX 옵션을 사용하면 새 만료 시간을 설정할 수 없습니다.


우리가 사용하는 경우 NX 옵션에서 시간 초과 값은 15로 설정됩니다.

만료 시간 초과 열 다섯 NX



EXPIRE 명령은 시간 초과가 적절하게 설정되었음을 의미하는 정수 1 응답을 반환합니다.

기존 시간 초과 값을 기반으로 시간 초과 설정

GT 및 LT 옵션을 사용하여 기존 제한 시간 길이를 기반으로 해시 만료 시간을 설정할 수 있습니다.

라는 새로운 해시를 만들어 봅시다. 해시와 타임아웃.

hmset hashWithTimeout 필드1 값1


다음으로 해시의 만료 시간을 200초로 설정했습니다.

hashWithTimeout 만료 200


다음과 같이 GT 옵션과 함께 해시에 대해 100초의 새로운 시간 제한을 설정해 보겠습니다.

hashWithTimeout 만료 100 GT


GT 옵션이 지정되었으므로 EXPIRE 명령은 새 시간 초과 값이 기존 값보다 큰지 확인하고 새 만료 시간을 설정합니다. 이 예에서 새 시간 초과는 기존 시간 초과보다 크지 않습니다. 따라서 명령은 새 만료 시간을 설정하지 않고 0이 반환됩니다.


GT 대신 LT 옵션을 사용합시다. 새 만료 시간이 현재 만료 시간보다 낮기 때문에 다음 명령은 새 시간 초과를 성공적으로 설정해야 합니다.

hashWithTimeout 만료 100 LT


결론

간단히 말해서 Redis EXPIRE 명령은 주어진 키에 대한 TTL 값을 설정하는 데 사용됩니다. 기본적으로 Redis 해시 키는 비휘발성이라고 하는 시간 초과와 연결되지 않습니다. 논의된 바와 같이 EXPIRE 명령은 Redis 해시에 시간 초과 값을 설정하는 데 사용됩니다. 일반적으로 해시는 제한 시간 값으로 지정된 시간이 지나면 Redis 데이터 저장소에서 삭제됩니다. 예에서 볼 수 있듯이 EXPIRE 명령은 XX, NX, GT 및 LT와 같은 일부 선택적 인수를 받아 조건에 따라 해시 만료를 설정합니다.