Redis中的K-V pairs保存在一個字典中洛史,這個字典叫做鍵空間旭旭。
鍵的過期時間被放在另外一個字典中,key指向鍵空間某個對象的指針,value是一個時間戳(long型整數(shù))斑鼻。
鍵過期策略有以下三種:
1)定時刪除:設(shè)置鍵過期之時,創(chuàng)建一個定時器(timer)猎荠,當鍵的過期時間來臨時卵沉,立即刪除這個鍵。
對內(nèi)存最友好法牲,最CPU最不友好史汗,影響響應時間和吞吐量。
2)惰性刪除:對CPU最友好拒垃,對內(nèi)存最不友好停撞,可能造成內(nèi)存泄露。
3)定期刪除:上面兩種方案的折中悼瓮,每隔一段時間刪除戈毒。難點是確定策略的時長和頻率。
如果刪除時長過長或者過于頻繁横堡,那么將退化為定時刪除埋市;反之,則退化為惰性刪除命贴。
目前定期任務(wù)是SeverCron道宅,100ms執(zhí)行一次。
1胸蛛,3是主動刪除污茵,2是被動刪除。Redis使用的策略是 惰性刪除 + 定期刪除葬项。
在主從結(jié)構(gòu)中泞当,從服務(wù)器不會刪除過期鍵。主服務(wù)器刪除一個過期鍵后民珍,會顯式地向從服務(wù)器發(fā)送一個del命令襟士,從服務(wù)器接到del命令之后盗飒,才會刪除過期鍵。
2017-12-26閱
1)要知道CPU和內(nèi)存的好惡
2)折中策略 + 組合策略