redis設定expire以及記憶體淘汰機制

2021-09-14 07:27:34 字數 1134 閱讀 3187

redis>set name kk

redis>expire name 60     //設定過期時間為60秒

redis>ttl name      //檢視當前該鍵的過期時間

可以通過expire來限制使用者訪問頻率問題(1分鐘限制訪問100次),如下偽**:

i***ists= exists nametime    //判斷是否存在該鍵

if i***ists is 1    //如果存在

times= incr nametime    //incr給該鍵+1

if times>100    //是否》100

print 訪問頻率超過限制,請稍後再試

exit

else

mult    //開啟事務

incr nametime    //建立並+1,   返回結果為1

expire nametime  60    //設定過期時間60秒

exec    //關閉事務並執行所有操作

2.redis的記憶體配置

redis作為快取時,可設定記憶體大小,  修改配置檔案的maxmemory引數,當記憶體使用超過了這個限制redis就會依據

maxmemory-policy引數指定的策略來刪除不需要的鍵直到redis占用記憶體小於指定記憶體.

lru(least recently used)演算法是刪除"最近最少使用"的鍵

volatile-lru    //使用lru演算法刪除乙個鍵(只對設定過期時間的鍵)

allkeys-lru    //使用lru演算法刪除乙個鍵(對所有鍵)

volatile-random    //隨機刪除乙個鍵(只對設定過期時間的鍵)

allkeys-random    //隨機刪除乙個鍵(對所有鍵)

volatile-ttl    //刪除過期時間最近的乙個鍵(即將過期的鍵)

noeviction    //記憶體已滿,也不刪除鍵,新增資料直接返回錯誤

如設定為allkeys-lru時,一旦記憶體超出,redis會不斷的刪除最近最少使用的鍵,直到占用的記憶體小於限制值.

參考書: redis入門指南-李子驊

redis設定expire以及刪除機制

如果沒有設定有效期,即使記憶體用完,redis 自動 機制也是看設定了有效期的,不會動沒有設定有效期的,如果清理後記憶體還是滿的,就不再接受寫操作。redis無論有沒有設定expire,他都會遵循redis的配置好的刪除機制,在配置檔案裡設定 redis最大記憶體不足 時,資料清除策略,預設為 vo...

Redis設定過期時間expire沒有生效

redis拿k 如果v為空.直接設定過期時間expire.是不生效的.更不能在最下面設定過期時間,大併發時,照樣不生效.所以得在設定值的時候同時設定過期時間 賦值,自增這些修改值的操作,如果你沒有在後面expire,就會把過期時間覆蓋掉,變成無限存活,也就是 1。redis 127.0.0.1 14...

Redis學習之expire命令

redisexpire命令用於設定 key 的過期時間。key 過期後將不再可用。expire key secondsexpire 為給定 key 設定生存時間,當 key 過期時 生存時間為 0 它會被自動刪除。在 redis 中,帶有生存時間的 key 被稱為 易失的 volatile 生存時間...