java cache详解,Java内存缓存详解
1.緩存為什么要存在
應(yīng)用服務(wù)器資源是有限的,數(shù)據(jù)庫(kù)每秒中接受請(qǐng)求的次數(shù)也是有限的。如果利用有限的資源來(lái)提供盡可能大的吞吐量呢,一個(gè)辦法:減少計(jì) 算量,縮短請(qǐng)求流程(減少網(wǎng)絡(luò)io或者硬盤io),這時(shí)候緩存就可以大展手腳了
2.什么樣的數(shù)據(jù)可以存到緩存中
一段時(shí)間內(nèi)不變的數(shù)據(jù)
3.為什么要有本地緩存
在系統(tǒng)中,有些數(shù)據(jù),數(shù)據(jù)量小,但是訪問(wèn)十分頻繁(例如國(guó)家標(biāo)準(zhǔn)行政區(qū)域數(shù)據(jù)),針對(duì)這種場(chǎng)景,需要將數(shù)據(jù)搞到應(yīng)用的本地緩存中,以提升系統(tǒng)的訪問(wèn)效率,減 少無(wú)謂的數(shù)據(jù)庫(kù)訪問(wèn)(數(shù)據(jù)庫(kù)訪問(wèn)占用數(shù)據(jù)庫(kù)連接,同時(shí)網(wǎng)絡(luò)消耗比較大),但是有一點(diǎn)需要注意,就是緩存的占用空間以及緩存的失效策略。
4.內(nèi)存緩存或本地緩存的原理
實(shí)現(xiàn)緩存的方式就是使用Map,而緩存的實(shí)現(xiàn)則主要分為三大步驟:第一:先到緩存里面查找是否有我們需要的對(duì)象,若是存在,則直接返回。第二:若是緩存里面沒(méi)有該對(duì)象,則將其數(shù)據(jù)添加到緩存中去。以備下次使用。第三:如果找到了相應(yīng)的數(shù)據(jù),或者是創(chuàng)建了相應(yīng)的數(shù)據(jù),那就直接使用這個(gè)數(shù)據(jù)。然而,java中Map對(duì)象的key設(shè)置為String類型,也是為了查找的方便。
實(shí)際上是建立一個(gè)Map集合類實(shí)現(xiàn)把緩存的內(nèi)容保存到內(nèi)存里面,只要服務(wù)器沒(méi)有關(guān)閉緩存就不會(huì)被清除,除非人為清除
importjava.util.Map;importjava.util.concurrent.ConcurrentHashMap;public classCacheClass {private static Map cache = new ConcurrentHashMap();public static void setCache(String key, String obj, longseconds){
cache.put(key,obj);
}public staticString getCache(String key){returncache.get(key);
}public static voidremoveCache(String key){
cache.remove(key);
}public static voidmain(String args[]){
removeCache("China");
String name= getCache("China");
System.out.println("name="+name);
setCache("China","中國(guó)",60*60*24*30);
name= getCache("China");
System.out.println("第二次取值name="+name);
removeCache("China");
name= getCache("China");
System.out.println("第三次取值name="+name);
}
}
總結(jié)
以上是生活随笔為你收集整理的java cache详解,Java内存缓存详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: asp.net接受表单验证格式后再提交数
- 下一篇: 如何开发rest接口服务_如何简化网络请
