redis 過期 淘汰 事務原子機制

2021-07-31 08:49:48 字數 2116 閱讀 7442

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...