首頁  >  文章  >  後端開發  >  php redis任何設定時間

php redis任何設定時間

coldplay.xixi
coldplay.xixi原創
2020-10-08 14:47:352231瀏覽

php redis設定時間的方法:1、取消生存時間,將鍵的生存時間設為永久,是PERSIST,代碼為【PERSIST session:captcha】;2、看一個鍵的生存時間用TTL指令,代號為【TTL session:captcha】。

php redis任何設定時間

php redis設定時間的方法:

Redis對鍵提供生存時間,在不指定生存時間時,生存時間是永久。時間到期後Redis會自動刪除這個鍵。可以用EXPIRE命令,時間單位時秒,如果一個鍵是被設為有限的生存時間,那麼在SET key進行重新賦值的時候會被再次設為永久:

SET session:captcha sd2a
EXPIRE session:captcha 600

取消生存時間,將鍵的生存時間設為永久,是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之前,客戶端被關閉了。那麼這個鍵和值就會持久化保存。且該ID終身只能訪問10次了。這就太糟糕了。

想了解更多程式設計學習,請關注php培訓欄位!

#

以上是php redis任何設定時間的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn