語音平臺開發(fā),正確處理緩存中過期的數(shù)據(jù)
在語音平臺開發(fā)時(shí)為應(yīng)對高并發(fā)場景可引入緩存技術(shù),緩存的使用可以緩解數(shù)據(jù)庫的訪問壓力,提升系統(tǒng)的可用性。由于緩存的存儲空間是有限的,所以當(dāng)緩存中的數(shù)據(jù)過期后需要采取正確的方式進(jìn)行清理。

一、過期策略
1、定期刪除
所謂的定期刪除是指Redis每100ms執(zhí)行一次過期數(shù)據(jù)的查詢工作,如果查詢到過期數(shù)據(jù)則直接刪除。定期刪除每次的作用對象并不是語音平臺開發(fā)中的所有庫,而是采用隨機(jī)的方式選取一定數(shù)量的鍵進(jìn)行過期數(shù)據(jù)的排查的刪除。
2、惰性刪除
在語音平臺開發(fā)中定期刪除是一種主動的過期策略,而惰性刪除是一種被動的過期策略,所謂的惰性刪除主要是指當(dāng)用戶對緩存中的某一數(shù)據(jù)發(fā)起訪問請求后,緩存會對該數(shù)據(jù)進(jìn)行過期檢查,如果是過期數(shù)據(jù)則直接刪除。
二、內(nèi)存淘汰機(jī)制
如果語音平臺開發(fā)中的過期數(shù)據(jù)太多,僅通過過期策略實(shí)現(xiàn)過期數(shù)據(jù)的刪除可能會導(dǎo)致Redis內(nèi)存耗盡,為了避免該情況,對于緩存中的數(shù)據(jù)還需要實(shí)現(xiàn)內(nèi)存淘汰策略。常見的內(nèi)存淘汰策略有以下幾種:
1、當(dāng)緩存的內(nèi)存使用率達(dá)到一定要求后,如果緩存中的數(shù)據(jù)沒有設(shè)置過期時(shí)間,則需要在寫入新數(shù)據(jù)時(shí)進(jìn)行報(bào)錯,這是Redis緩存中默認(rèn)的一種策略。

2、當(dāng)緩存的內(nèi)存使用率達(dá)到一定要求后,如果緩存中的數(shù)據(jù)沒有設(shè)置過期時(shí)間,則可以將使用次數(shù)較少的舊數(shù)據(jù)清除掉,然后再進(jìn)行新數(shù)據(jù)的緩存。
3、如果緩存內(nèi)存使用率到達(dá)且緩存中數(shù)據(jù)沒有設(shè)置過期時(shí)間,還有一種不太推薦的內(nèi)存淘汰策略,那就是隨機(jī)刪除緩存中的數(shù)據(jù)。
4、如果緩存內(nèi)存使用率達(dá)到一定要求,且緩存中的數(shù)據(jù)設(shè)置了過期時(shí)間,則可以將使用最少的舊數(shù)據(jù)清除掉,保存新數(shù)據(jù)。
5、當(dāng)語音平臺開發(fā)的緩存內(nèi)存使用率到達(dá)且緩存中數(shù)據(jù)設(shè)置了過期時(shí)間,則可以將即將過期的舊數(shù)據(jù)刪除掉。
6、如果緩存內(nèi)存使用率達(dá)到且緩存中數(shù)據(jù)設(shè)置了過期時(shí)間,也可以采用隨機(jī)的方式進(jìn)行數(shù)據(jù)的刪除。

其實(shí)緩存在語音平臺開發(fā)中可以起到很多作用,只有正確地使用緩存才能充分發(fā)揮出其價(jià)值。不過在使用緩存的同時(shí)還需要做好緩存問題的預(yù)防工作,這樣才能更大程度提升語音平臺開發(fā)質(zhì)量。
聲明:本文由云豹科技原創(chuàng),轉(zhuǎn)載請注明作者名及原文鏈接,否則視為侵權(quán)
?