国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

mysql - 請(qǐng)教一個(gè)Java做資料庫(kù)快取的問(wèn)題
為情所困
為情所困 2017-06-12 09:19:37
0
1
824

現(xiàn)在在負(fù)責(zé)學(xué)校的一個(gè)圖書(shū)館個(gè)人寫(xiě)作平臺(tái),基本的商業(yè)模式已經(jīng)完成了,但是專案在高並發(fā)環(huán)境下還沒(méi)有做任何的最佳化。

每個(gè)學(xué)生在閱讀完一本書(shū)後都可以寫(xiě)書(shū)評(píng)或做筆記,書(shū)評(píng)是公開(kāi)的,筆記是私有的。依照現(xiàn)在的做法每個(gè)學(xué)生操作都存取資料庫(kù)去查詢,這樣以後一定會(huì)有效能瓶頸。

我大概看了一下ehcache的相關(guān)教學(xué)但沒(méi)有一個(gè)好的解決方案,主要是無(wú)法判斷快取是否失效。例如將高頻學(xué)生的一定數(shù)量筆記都放入到快取中間去的話,如果設(shè)定一個(gè)特定的超時(shí)時(shí)間5min,但是如果剛好在這5min之內(nèi)又新添加或者修改了一篇筆記的話該怎麼辦麼?

例如在mybatis中對(duì)應(yīng)一條sql語(yǔ)句select * from comments condition,我可以透過(guò)ehcache建立一個(gè)記憶體緩存,但是如果comments新加入或更新了一則記錄,怎麼能優(yōu)雅的更新上次在ehcache中加入的快取。

各位網(wǎng)友是否能夠建議一下相關(guān)的解決方案? thanks :-)

為情所困
為情所困

全部回覆(1)
代言

既然是緩存,那就一定對(duì)數(shù)據(jù)實(shí)效性有容忍度,否則要嚴(yán)格即時(shí)的數(shù)據(jù),就只能存取資料庫(kù)查詢了。

根據(jù)題主描述的業(yè)務(wù)場(chǎng)景來(lái)看,普遍的解決方案是透過(guò)外置索引來(lái)維護(hù)圖書(shū)和書(shū)評(píng)的關(guān)係(當(dāng)然索引也不是完全實(shí)時(shí)的),再透過(guò)kv快取(redis,ehcache,map等等)來(lái)快取書(shū)評(píng)的具體內(nèi)容。
在資料更新(update)時(shí),通常情況先更新資料庫(kù),然後更新緩存,索引不需要更新。
在資料更新(insert)時(shí),需要在update基礎(chǔ)上,再增加對(duì)應(yīng)的關(guān)係到索引中。

簡(jiǎn)單的外置索引,可以在資料庫(kù)中,增加一張(圖書(shū)-書(shū)評(píng))關(guān)係表,建好索引,在查詢書(shū)評(píng)時(shí)先查詢(分頁(yè)查詢)關(guān)係表,再透過(guò)書(shū)評(píng)主鍵,查詢具體書(shū)評(píng)資訊(快取加在單一書(shū)評(píng)資訊上),建議分兩次查詢並在記憶體中組裝數(shù)據(jù),不要使用連表查詢(影響資料庫(kù)效能)。關(guān)係表資料不需要建立緩存,只需要增加書(shū)評(píng)資訊的快取即可。

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板