1.一種緩存數(shù)據(jù)的方法,包括:
對(duì)于一條數(shù)據(jù),在緩存中設(shè)置與該數(shù)據(jù)對(duì)應(yīng)的兩個(gè)鍵-值對(duì);其中,用第一鍵-值對(duì)存放該數(shù)據(jù)本身,設(shè)置其在緩存中的有效時(shí)間為第一預(yù)設(shè)時(shí)間;用第二鍵-值對(duì)標(biāo)記該數(shù)據(jù)的預(yù)失效時(shí)間,設(shè)置其在緩存中的有效時(shí)間為第二預(yù)設(shè)時(shí)間;第二預(yù)設(shè)時(shí)間小于第一預(yù)設(shè)時(shí)間;
當(dāng)收到一數(shù)據(jù)請(qǐng)求時(shí),根據(jù)該數(shù)據(jù)請(qǐng)求在所述緩存中查找與請(qǐng)求的數(shù)據(jù)對(duì)應(yīng)的兩個(gè)鍵-值對(duì);如果從緩存查找到第一鍵-值對(duì),但未查找到第二鍵-值對(duì),則將第一鍵-值對(duì)中的值返回給請(qǐng)求方,從數(shù)據(jù)庫重新讀取該請(qǐng)求的數(shù)據(jù)來更新緩存中對(duì)應(yīng)的第一鍵-值對(duì)中的值,并重新設(shè)置對(duì)應(yīng)的第二鍵-值對(duì)以及對(duì)應(yīng)的第一預(yù)設(shè)時(shí)間和第二預(yù)設(shè)時(shí)間。
2.如權(quán)利要求1所述的方法,其中,
保存在所述緩存中的數(shù)據(jù)為熱數(shù)據(jù),所述熱數(shù)據(jù)為數(shù)據(jù)庫中的被訪問頻率高于預(yù)設(shè)值的數(shù)據(jù)。
3.如權(quán)利要求1所述的方法,其中,該方法進(jìn)一步包括:
如果從緩存中查找到第一鍵-值對(duì),也查找到第二鍵-值對(duì),則將第一鍵-值對(duì)中的值返回給請(qǐng)求方,不作其他處理。
4.如權(quán)利要求1所述的方法,其中,該方法進(jìn)一步包括:
如果從緩存未查找到第一鍵-值對(duì),則從數(shù)據(jù)庫中獲取該數(shù)據(jù)請(qǐng)求所請(qǐng)求的數(shù)據(jù)返回給請(qǐng)求方。
5.如權(quán)利要求1所述的方法,其中,所述用第一鍵-值對(duì)存放該數(shù)據(jù)本身,用第二鍵-值對(duì)標(biāo)記該數(shù)據(jù)的預(yù)失效時(shí)間包括:
將第一鍵-值對(duì)中的值設(shè)置為該條數(shù)據(jù)本身;
將第二鍵-值對(duì)中的值設(shè)置為固定值或任意值。
6.一種緩存數(shù)據(jù)的裝置,其中,該裝置包括:
緩存處理單元,適于對(duì)于一條數(shù)據(jù),在緩存中設(shè)置與該數(shù)據(jù)對(duì)應(yīng)的兩個(gè)鍵-值對(duì);其中,用第一鍵-值對(duì)存放該數(shù)據(jù)本身,設(shè)置其在緩存中的有效時(shí)間為第一預(yù)設(shè)時(shí)間;用第二鍵-值對(duì)標(biāo)記該數(shù)據(jù)的預(yù)失效時(shí)間,設(shè)置其在緩存中的有效時(shí)間為第二預(yù)設(shè)時(shí)間;第二預(yù)設(shè)時(shí)間小于第一預(yù)設(shè)時(shí)間;
請(qǐng)求處理單元,適于當(dāng)收到一數(shù)據(jù)請(qǐng)求時(shí),根據(jù)該數(shù)據(jù)請(qǐng)求在所述緩存中查找與請(qǐng)求的數(shù)據(jù)對(duì)應(yīng)的兩個(gè)鍵-值對(duì);如果從緩存查找到第一鍵-值對(duì),但未查找到第二鍵-值對(duì)時(shí),將第一個(gè)鍵對(duì)應(yīng)的值返回給請(qǐng)求方,并向緩存處理單元發(fā)送第一通知;
所述緩存處理單元,進(jìn)一步適于收到第一通知時(shí),從數(shù)據(jù)庫重新讀取該請(qǐng)求的數(shù)據(jù)來更新緩存中對(duì)應(yīng)的第一鍵-值對(duì)中的值,并重新設(shè)置對(duì)應(yīng)的第二鍵-值對(duì)以及對(duì)應(yīng)的第一預(yù)設(shè)時(shí)間和第二預(yù)設(shè)時(shí)間。
7.如權(quán)利要求6所述的裝置,其中,
保存在所述緩存中的數(shù)據(jù)為熱數(shù)據(jù),所述熱數(shù)據(jù)為數(shù)據(jù)庫中的被訪問頻率高于預(yù)設(shè)值的數(shù)據(jù)。
8.如權(quán)利要求6所述的裝置,其中,
所述請(qǐng)求處理單元,進(jìn)一步適于當(dāng)從緩存中查找到第一鍵-值對(duì),也查找到第二鍵-值對(duì)時(shí),將第一鍵-值對(duì)中的值返回給請(qǐng)求方,不作其他處理。
9.如權(quán)利要求6所述的裝置,其中,
所述請(qǐng)求處理單元,進(jìn)一步適于當(dāng)從緩存未查找到第一鍵-值對(duì),則從數(shù)據(jù)庫中獲取該數(shù)據(jù)請(qǐng)求所請(qǐng)求的數(shù)據(jù)返回給請(qǐng)求方。
10.如權(quán)利要求6所述的裝置,其中,
所述緩存處理單元,適于將第一鍵-值對(duì)中的值設(shè)置為該條數(shù)據(jù)本身,將第二鍵-值對(duì)中的值設(shè)置為固定值或任意值。