Java內存緩存


1.緩存為什么要存在

     應用服務器資源是有限的,數據庫每秒中接受請求的次數也是有限的。如果利用有限的資源來提供盡可能大的吞吐量呢,一個辦法:減少計 算量,縮短請求流程(減少網絡io或者硬盤io),這時候緩存就可以大展手腳了

2.什么樣的數據可以存到緩存中

     一段時間內不變的數據

3.為什么要有本地緩存

     在系統中,有些數據,數據量小,但是訪問十分頻繁(例如國家標准行政區域數據),針對這種場景,需要將數據搞到應用的本地緩存中,以提升系統的訪問效率,減 少無謂的數據庫訪問(數據庫訪問占用數據庫連接,同時網絡消耗比較大),但是有一點需要注意,就是緩存的占用空間以及緩存的失效策略。

4.內存緩存或本地緩存的原理

     實現緩存的方式就是使用Map,而緩存的實現則主要分為三大步驟:第一:先到緩存里面查找是否有我們需要的對象,若是存在,則直接返回。第二:若是緩存里面沒有該對象,則將其數據添加到緩存中去。以備下次使用。第三:如果找到了相應的數據,或者是創建了相應的數據,那就直接使用這個數據。然而,java中Map對象的key設置為String類型,也是為了查找的方便。   

實際上是建立一個Map集合類實現把緩存的內容保存到內存里面,只要服務器沒有關閉緩存就不會被清除,除非人為清除  

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

public class CacheClass {
    
    private static Map<String,String> cache = new ConcurrentHashMap<String, String>();
    
    public static void setCache(String key, String obj, long seconds){
        cache.put(key,obj);
    }
    
    public static String getCache(String key){
         return cache.get(key);
    }
    
    public static  void removeCache(String key){
        cache.remove(key);
    }
    
    public static void main(String args[]){
        removeCache("China");
        String name = getCache("China");
        System.out.println("name="+name);
        setCache("China","中國",60*60*24*30);
        name = getCache("China");
        System.out.println("第二次取值name="+name);
        removeCache("China");
        name = getCache("China");
        System.out.println("第三次取值name="+name);
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM