redis生存時間

2022-06-16 03:00:10 字數 1386 閱讀 6838

2023年12月02日 16:44:42 wu_yangchun

閱讀數:313 標籤: redis

生存時間

更多個人分類: jvm

快取expire命令設定失效時間,單位秒。

redis>set session:1 aaa

okredis>expire session:1 900

(integer) 1

ttl命令檢視還有多長時間失效

redis>set foo bar

okredis>expire foo 20

(integer) 1

redis>ttl foo

(integer) 15

redis>ttl foo

(integer) 7

redis> ttl foo

(integer) -1

例如要限制每分鐘每個使用者最多只能訪問100個頁面,思路是對每個使用者使用乙個名為「rate.limiting:使用者ip」的字串型別鍵,每次使用者訪問則使用incr命令遞增該鍵的鍵值,如果遞增後的值是1(第一次訪問頁面),則同時還要設定該鍵的生存時間為1分鐘。這樣每次使用者訪問頁面時都讀取該鍵的鍵值,如果超過了100就表明該使用者的訪問頻率超過了限制,需要提示使用者稍後訪問。該鍵每分鐘會自動被刪除,所以下一分鐘使用者的訪問次數又會重新計算,也就達到了限制訪問頻率的目的。

當伺服器記憶體有限時,如果大量地使用快取鍵且生存時間設定得過長就會導致redis佔滿記憶體;另一方面如果為了防止redis占用記憶體過大而將快取鍵的生存時間設得太短,就可能導致快取命中率過低並且大量記憶體白白地閒置。 

實際開發中會發現很難為快取鍵設定合理的生存時間,為此可以限制redis能夠使用的最大記憶體,並讓redis按照一定的規則淘汰不需要的快取鍵,這種方式在只將redis用作快取系統時非常實用。

具體的設定方法為:修改配置檔案的maxmemory引數,限制redis最大可用記憶體大小(單位是位元組),當超出了這個限制時redis會依據maxmemory-policy引數指定的策略來刪除不需要的鍵,直到redis占用的記憶體小於指定記憶體。 

maxmemory-policy支援的規則如圖所示。其中的lru(least recently used)演算法即「最近最少使用」,其認為最近最少使用的鍵在未來一段時間內也不會被用到,即當需要空間時這些鍵是可以被刪除的。 

事實上redis並不會準確地將整個資料庫中最久未被使用的鍵刪除,而是每次從資料庫中隨機取3個鍵並刪除這3個鍵中最久未被使用的鍵。刪除生存時間最接近的鍵的實現方法也是這樣。「3」這個數字可以通過redis的配置檔案中的maxmemory-samples引數設定。

redis學習 事物,生存時間

事物 1 multi exec 2 錯誤處理 語法錯誤可以檢測到,執行錯誤無法檢測,即使事物裡一條命令出現了語法錯誤,事物裡其他的命令依然會繼續執行 3 watch 檢測鍵值被修改後阻止之後的乙個事物的執行,並不能保證其他客戶端不修改這個鍵值 unwatch可以取消監控 生存時間 expire ke...

redis中鍵的生存時間(expire)

1 redis中可以使用expire命令設定乙個鍵的生存時間,到時間後redis會自動刪除它 expire 設定生存時間 單位 秒 pexpire 設定生存時間 單位 毫秒 ttl pttl 檢視鍵的剩餘生存時間 persist 取消生存時間 expireat key unix時間戳13518586...

Redis資料庫篇 生存時間

作業系統 ubuntu 16.04 x64 redis版本 4.0.9在實際的開發中經常遇到一些有時效的資料,使用關聯式資料庫一般需要乙個額外的字段來記錄到期時間。在redis中對key提供了生存時間的支援,到期後redis會自動刪除它。1.設定生存時間 expire key seconds pex...