Java中緩衝之記憶體緩衝__Java

來源:互聯網
上載者:User

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);}}

運行結果:

name=null
第二次取值name=中國
第三次取值name=null


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.