>백엔드 개발 >PHP 문제 >PHP는 설정된 시간을 Redis로 설정합니다.

PHP는 설정된 시간을 Redis로 설정합니다.

coldplay.xixi
coldplay.xixi원래의
2020-10-08 14:47:352422검색

PHP redis에서 시간을 설정하는 방법: 1. 생존 시간을 취소하고 키의 생존 시간을 영구(PERSIST)로 설정합니다. 코드는 [PERSIST session:captcha]입니다. 2. TTL 명령을 사용하여 생존 시간을 확인합니다. 코드는 [TTL 세션:captcha]입니다.

PHP는 설정된 시간을 Redis로 설정합니다.

PHP Redis에서 시간을 설정하는 방법:

Redis는 생존 시간을 지정하지 않으면 생존 시간이 영구적입니다. Redis는 시간이 만료된 후 이 키를 자동으로 삭제합니다. EXPIRE 명령을 사용할 수 있습니다. 시간 단위는 초입니다. 키의 수명이 제한되어 있으면 SET 키가 다시 할당되면 다시 영구적으로 설정됩니다.

SET session:captcha sd2a
EXPIRE session:captcha 600

수명을 취소하고 수명을 변경하세요. key 영구로 설정, 즉 PERSIST:

PERSIST session:captcha

TTL 명령을 사용하여 키의 생존 시간을 확인합니다. -1은 만료 후 영구 또는 삭제됨을 의미합니다.

TTL session:captcha

Redis의 INCR, LPUSH, HSET, ZREM 및 기타 명령 중에는 생존 시간이 변경되지 않습니다.

시간을 밀리미터 단위까지 정확하게 제어하려면 PEXPIRE가 필요하며, PTTL을 사용하여 남은 시간을 확인하세요.

만료 시간이 몇 초인지가 아니라 만료 시간을 부여하고 싶다면 어떻게 해야 하나요? EXPIREAT 및 PEXPIREAT가 필요합니다. EXPIREAT의 매개변수는 만료 타임스탬프(초)이고 PEXPIREAT의 매개변수는 만료 타임스탬프(밀리초)입니다.

SET session:captcha sd2a
EXPIREAT session:captcha 1399902009
PEXPIREAT session:captcha 1399902009000

애플리케이션 시나리오 1: 액세스 빈도 제한: 각 사용자가 페이지당 분당 10개의 항목만 탐색하도록 제한합니다. 의사 코드는 다음과 같습니다.

$isExists = EXISTS limit:user1:192.168.1.2
if($isExists){
    $num = INCR limit:user1:192.168.1.2
    if($num > 10){
        print '超过限制'
        exit
    }
}else{
    MULTI
    INCR limit:user1:192.168.1.2
    EXPIRE limit:user1:192.168.1.2 60
    EXEC
}

트랜잭션을 사용하는 이유는 INCR Limit:user1:192.168.1.2를 실행한 후 EXPIRE Limit:user1:192.168.1.2 60을 실행하기 전에 클라이언트가 닫히기 때문입니다. 그러면 키와 값이 유지됩니다. 그리고 이 아이디는 평생 10번만 접속이 가능합니다. 안됐네요.

프로그래밍 학습에 대해 더 자세히 알고 싶다면 php training 칼럼을 주목해주세요!

위 내용은 PHP는 설정된 시간을 Redis로 설정합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.