寶慕林4294392
2023-04-26 16:32:15
我想一次重新加載 cache2k 中的所有緩存條目。我使用的是 1.2.2 版。我試過(guò)使用org.cache2k.integration.CacheLoader#load方法,但它只接受一個(gè)鍵并返回一個(gè)值。我不喜歡一次只從數(shù)據(jù)庫(kù)下載一條記錄的想法。這不是最佳的。我希望使用一個(gè)數(shù)據(jù)庫(kù)查詢(xún)重新加載所有緩存條目。請(qǐng)指導(dǎo)實(shí)現(xiàn)它的推薦方法是什么。謝謝您的回答!
1 回答

慕蓋茨4494581
TA貢獻(xiàn)1850條經(jīng)驗(yàn) 獲得超11個(gè)贊
您可以通過(guò)以下方式指示 cache2k 重新加載所有條目:
??cache.reloadAll(cache.keys(),?null);
但是,在當(dāng)前版本中,這會(huì)通過(guò)加載程序線程池一個(gè)一個(gè)地重新加載所有條目。目前缺少所謂的“批量加載”。已經(jīng)有更多的需求了。
如果您總是批量加載全部?jī)?nèi)容,那么問(wèn)題是您是否真的需要單獨(dú)的緩存條目,而是緩存包含所有項(xiàng)目的單個(gè)地圖。
使用加載程序有幾個(gè)優(yōu)點(diǎn),例如彈性和提前刷新。如果您不需要這個(gè)并且只想用新內(nèi)容填充緩存,您可以使用它cache.keys()
來(lái)獲取緩存鍵的列表,請(qǐng)求數(shù)據(jù)庫(kù),然后通過(guò)更新整個(gè)緩存cache.putAll()
。
添加回答
舉報(bào)
0/150
提交
取消