set key value ex 60
#鍵值對存活60秒
set key value px 60
#鍵值對存活60毫秒
expire key
60#key60秒之後失效,在2.6版本之後使用pexpire設定毫秒數
3、檢視乙個key的有效期:
ttl key
#在2.6版本以上可以使用pttl,檢視毫秒數
4、撤銷乙個鍵的生存期
persist key
#撤銷鍵的生存期設定
在reids裡面有兩個全域性的雜湊表:
乙個是所有的key-value的,設定了過期時間的key-value單獨儲存在乙個雜湊表。
redis何時進行過期處理:
1、必要的時候:當訪問的時候key可能過期了,這時候作過期處理
2、cpu空閒時:有兩個時間,乙個是一次事件迴圈結束,進入事件偵聽前;第二個是系統空閒的時候後台做定期任務,只占用cpu25%的時間(每次100ms,25ms用於清理,其他時間其他業務)。
依次遍歷所有的db,從db中隨機取20個key,判斷是否過期,如果過期,去除。如果有5個以上的key過期,重複步驟,否則進入下乙個db,進行相同的操作。
注意:當在操作的過程中,達到了時間的限定,操作停止。
在配置檔案中有關於設定刪除過期key的頻率的值hz:
數值設定越大,表示去除過期key的頻率越高,刪除過期key會越及時。
1、判斷是否設定了最大允許的記憶體maxmemory
2、如果設定了,呼叫freememoryifneeded,判斷記憶體是否超出了最大記憶體限制
3、如果超出了最大記憶體設定,按照設定的淘汰策略淘汰key,直到記憶體小於最大記憶體。
設定的淘汰策略:
redis的一般六種淘汰策略:
1、依次遍歷所有的db
2、按照淘汰策略挑選乙個key進行淘汰,若果不是隨機刪除,還要參考設定的樣本數:
在樣本中挑選最佳的
3、遍歷完成,計算是否還超過最大記憶體。
4、如果還超過最大記憶體,重複步驟1.
事務是完成乙個工作的一系列的操作,在事務中每個命令逐條執行,事務是乙個原子性的動作,要麼全部操作完成,要麼全部不做。
事務的操作過程:
1、使用multi命令標示事務的開始
2、命令入隊
2、使用exec執行事務的所有指令
如果在鍵入命令的時候選擇放棄事務繫結,可以使用 discard命令。
相關的命令操作:
watch key:監視乙個多個key如果這些被監視的key被其他命令修改,則該事務取消。
例子:
redis-cli 1:
監視mykey:並設定事務
這時候,在第二個終端將其進行修改:
在第乙個客戶端檢視:
可以看到第乙個設定的事務沒有執行的效果,它被取消了。
all
redis過期機制和淘汰策略
redis的過期key刪除機制 這樣就會導致乙個問題,假設乙個key過期了,我也不去訪問。他就會一直存在記憶體當中,所以可能會導致記憶體滿掉,因此redis還引入了記憶體淘汰機制。通過maxmemory 配置項來設定允許使用者使用的最大記憶體大小,當記憶體資料集大小達到一定的大小時,就會根據配置項配...
Redis之過期策略 資料淘汰機制
過期策略指的是ttl到期時的處理策略,淘汰策略指的是記憶體滿了的情況下的策略 redis可以對key設定過期時間,這是乙個非常實用的功能,那redis是如何實現這個機制的呢?答案就是 定期刪除 惰性刪除 結合定期刪除 惰性刪除redis 實現了key的過期時間機制,但還是會有一些key會沒有被定期刪...
redis學習(二)過期與淘汰機制
redis可以為快取資料的key設定expire time也就是過期時間,當資料過期之後,通過過期策略來將資料清理。通過資料庫判斷資料是否過期無疑是比通過程式判斷要好的多。redis的過期策略有兩種分別是定期刪除和懶惰刪除 定期刪除 redis預設是每隔 100ms 就隨機抽取一些設定了過期時間的k...