<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Redis生存時間設置

        來源:懂視網 責編:小采 時間:2020-11-09 06:54:26
        文檔

        Redis生存時間設置

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

        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等命令時不會改變生存時間的。

        (推薦:redis視頻教程)

        想要精確到毫米來控制時間,就需要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次了。這就太糟糕了。

        應用場景二:實現緩存。計算一萬名用戶的排行榜,是很耗費資源的,那么我們把數據在第一次計算后存進一個key,然后對這個key設置生存時間。在1個小時后生存時間到期,key被刪除,再次進行計算新排名并保存的一個臨時key。我們用偽代碼實現:

        //戰斗排行榜
        $rank = GET cache:rank:fight
        if not $rank
         $rank = 計算排名()
         MULTI
         SET cache:rank:fight $rank
         EXPIRE cache:rank:fight 3600
         EXEC

        Redis是內存存儲的數據庫,假如內存被緩存占滿了,Redis會根據配置文件來刪除一定的緩存。配置項是Redis的配置文件中的maxmemory參數,單位是字節。超過這個限制之后,會根據配置文件的maxmemory-policy參數來刪除不需要的鍵。maxmemory-policy的可選規則是如下四種:

        1、volatile-lru:使用LRU算法刪除一個鍵(設置了生存時間的鍵)。

        2、allkey-lru:使用LRU算法刪除一個鍵。

        3、volatile-random:隨即刪除一個鍵(設置了生存時間的鍵)。

        4、allkey-random:隨即刪除一個鍵。

        5、volatile-ttl:刪除生存時間即將過期的一個鍵。是隨即取出來N個鍵,然后刪除N個鍵中即將過期的鍵,而不是遍歷所有的鍵刪除即將過期的。N是幾?配置文件配的。

        6、nevication:不刪除,返回錯誤。

        Redis設置Key的過期時間 – EXPIRE命令

        EXPIRE key seconds

        為給定 key 設置生存時間,當 key 過期時(生存時間為 0 ),它會被自動刪除。

        在 Redis 中,帶有生存時間的 key 被稱為『易失的』(volatile)。

        生存時間可以通過使用 DEL 命令來刪除整個 key 來移除,或者被 SET 和 GETSET 命令覆寫(overwrite),這意味著,如果一個命令只是修改(alter)一個帶生存時間的 key 的值而不是用一個新的 key 值來代替(replace)它的話,那么生存時間不會被改變。

        比如說,對一個 key 執行 INCR 命令,對一個列表進行 LPUSH 命令,或者對一個哈希表執行 HSET 命令,這類操作都不會修改 key 本身的生存時間。

        另一方面,如果使用 RENAME 對一個 key 進行改名,那么改名后的 key 的生存時間和改名前一樣。

        RENAME 命令的另一種可能是,嘗試將一個帶生存時間的 key 改名成另一個帶生存時間的another_key ,這時舊的 another_key (以及它的生存時間)會被刪除,然后舊的 key 會改名為 another_key ,因此,新的 another_key 的生存時間也和原本的 key 一樣。

        使用 PERSIST 命令可以在不刪除 key 的情況下,移除 key 的生存時間,讓 key 重新成為一個『持久的』(persistent) key 。

        更新生存時間

        可以對一個已經帶有生存時間的 key 執行 EXPIRE 命令,新指定的生存時間會取代舊的生存時間。

        過期時間的精確度

        在 Redis 2.4 版本中,過期時間的延遲在 1 秒鐘之內 —— 也即是,就算 key 已經過期,但它還是可能在過期之后一秒鐘之內被訪問到,而在新的 Redis 2.6 版本中,延遲被降低到 1 毫秒之內。

        Redis 2.1.3 之前的不同之處

        在 Redis 2.1.3 之前的版本中,修改一個帶有生存時間的 key 會導致整個 key 被刪除,這一行為是受當時復制(replication)層的限制而作出的,現在這一限制已經被修復。可用版本:

        >= 1.0.0

        時間復雜度:

        O(1)

        返回值:

        設置成功返回 1 。

        當 key 不存在或者不能為 key 設置生存時間時(比如在低于 2.1.3 版本的 Redis 中你嘗試更新 key 的生存時間),返回 0 。

        redis> SET cache_page "www.google.com"
        OK
        
        redis> EXPIRE cache_page 30 # 設置過期時間為 30 秒
        (integer) 1
        
        redis> TTL cache_page # 查看剩余生存時間
        (integer) 23
        
        redis> EXPIRE cache_page 30000 # 更新過期時間
        (integer) 1
        
        redis> TTL cache_page
        (integer) 29996

        1、在小于2.1.3的redis版本里,只能對key設置一次expire。redis2.1.3和之后的版本里,可以多次對key使用expire命令,更新key的expire time。

        2、redis術語里面,把設置了expire time的key 叫做:volatile keys。 意思就是不穩定的key。

        3、如果對key使用set或del命令,那么也會移除expire time。尤其是set命令,這個在編寫程序的時候需要注意一下。

        4、redis2.1.3之前的老版本里,如果對volatile keys 做相關寫入操作(LPUSH,LSET),和其他一些觸發修改value的操作時,redis會刪除 該key。

        也就是說 :

        redis.expire(key,expiration);
        
        redis.lpush(key,field,value);
        
        redis.get(key) //return null

        redis2.1.3之后的版本里面沒有這個約束,可以任意修改。

        redis.set(key,100);
        redis.expire(key,expiration);
        redis.incr(key)
        redis.get(key)
        //redis2.2.2 return 101; redis<2.1.3 return 1;

        5、redis對過期鍵采用了lazy expiration:在訪問key的時候判定key是否過期,如果過期,則進行過期處理。其次,每秒對volatile keys 進行抽樣測試,如果有過期鍵,那么對所有過期key進行處理。

        更多redis知識請關注redis入門教程欄目。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Redis生存時間設置

        Redis生存時間設置:Redis對鍵提供生存時間,在不指定生存時間時,生存時間是永久。時間到期后Redis會自動刪除這個鍵。可以用EXPIRE命令,時間單位時秒,如果一個鍵是被設為有限的生存時間,那么在SET key進行重新賦值的時候會被再次設為永久:SET session:captcha
        推薦度:
        標簽: 設置 時間 redis
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 成人性生交大片免费看中文| 羞羞视频在线观看免费| 84pao强力永久免费高清| 亚洲女同成av人片在线观看| 美女巨胸喷奶水视频www免费| 99亚偷拍自图区亚洲| 69堂人成无码免费视频果冻传媒| 精品成在人线AV无码免费看| 亚洲国产高清视频在线观看| 日日麻批免费40分钟日本的| 亚洲AV一二三区成人影片| 成人免费淫片在线费观看| 亚洲国产午夜精品理论片在线播放| 男人j进女人p免费视频| 免费人成在线观看网站视频| 亚洲精品视频在线观看免费| 永久在线观看www免费视频| 久久亚洲精品成人| 3d动漫精品啪啪一区二区免费| 国产区卡一卡二卡三乱码免费| 亚洲av一综合av一区| 日本在线免费播放| 亚洲一本之道高清乱码| 日本免费一区尤物| 国产精品免费看久久久香蕉 | 亚洲资源在线视频| 99久久这里只精品国产免费| 亚洲国产精品自在自线观看| 亚洲国产精品一区二区第一页免| 亚洲人成免费电影| 国产无遮挡又黄又爽免费视频| 亚洲福利视频一区| 日本免费一区二区三区最新vr| 亚洲乱码卡三乱码新区| 亚洲国产中文v高清在线观看| 亚洲日韩中文字幕无码一区| 亚洲国产高清精品线久久| 久久99国产综合精品免费| 久久无码av亚洲精品色午夜| 亚洲AV无码乱码国产麻豆穿越 | 日本久久久久亚洲中字幕|