首頁  >  問答  >  主體

JAVA缓存框架有哪些意义呢?

Java开源缓存框架介绍(OSCache,JSC)
OSCache是个一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决方案。
有一个疑惑。就是JAVA缓存框架与memcache有什么区别呢?我把所有数据查询出来放在memcache里面不行么?比如说oscache与memcache适用场合有什么区别呢?

PHP中文网PHP中文网2729 天前862

全部回覆(7)我來回復

  • 大家讲道理

    大家讲道理2017-04-17 13:32:08

    參考j2cache實作

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-17 13:32:08

    OSCache好久沒更新了,建議多看看EHCache的官方文件。

    ehcache這種jvm的快取memcache這種io等級的快取還是有明顯差別的,以下差異決定了他們會在不同的場景下使用。
    优点: 沒有IO開銷會有更高的效率,使用起來也更有彈性。
    缺点: 但公用jvm記憶體也會對應用程式本身有影響,另外多個應用程式共享就比較苦難了。 (ehcache有一個不使用jvm記憶體的方案)

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 13:32:08

    OSCache或EHCache這種,主要的應用場景大多是應用程式內快取。也就是我這一個程式裡使用的快取。所有的緩存在自己寫的這個程式裡面。
    而 memcache 是獨立的另一個進程,是獨立的緩存,緩存的資料保存的另一個進程的記憶體中。差別在我看來有兩點:

    1. EHCache 這種應用中的緩存,不太容易實現多實例應用間共享。對於常見的 Web 型應用,需要透過啟動多個實例來增強處理能力的情況下,快取不能共享就不利於快取命中。
    2. memcache 這種獨立的緩存,不會受到應用的啟動、停止的影響。在 Web 應用中,程式重啟是一個很常見的事情,如果使用應用程式內的緩存,一旦程式重啟,快取就全部遺失了(當然預設指沒有開啟持久化支援的情況下)。

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-17 13:32:08

    個人感覺memcache就類似一個對象的容器,只是提供了簡單的放入對象,移出對象的功能,可以想像成是一個Map。
    而OSCache是​​在這種物件容器的基礎上進行了封裝,提供了更強大的功能,可以透過簡單設定檔來實現一些內容的自動緩存,而直接使用memcache需要額外寫很多快取的羅輯和策略程式碼。

    回覆
    0
  • 大家讲道理

    大家讲道理2017-04-17 13:32:08

    使用緩存,例如講一些固定的master資料快取起來,網站效能提升5-10倍非常容易。我們使用EHCache輕輕鬆松將一個選課系統的表現提升了7-8倍。

    使用緩存,最麻煩的就是處理資料的同步。例如一個redis快取伺服器、一個mysql伺服器,你可以寫資料時同時寫兩個資料庫,但是處理事務會有問題,關於快取同步,還是比較麻煩的事情

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 13:32:08

    OSCache或EHCache這種是JVM緩存,它不能在多個應用或說不能被你的叢集共享,這樣就會造成記憶體的浪費,適用於不需要叢集的小型應用。 memcache 獨立的緩存,可以被叢集或多個應用程式共享,適用於比較大一些的應用程式吧。

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 13:32:08

    OSCache或EHCache常用於伺服器本地緩存,直接使用的話,只能單一應用進程訪問,如果開了多個進程或部署多台伺服器的話,每個進程只能存取本地的緩存,如果需要緩存同步,需要寫入相關的同步程式碼。 ehcache還支援RMI、JGroups、JMS的分散式緩存,就不需要手寫同步程式碼了,還可以搭建單獨的EhCache Server,這種情況就跟memcache差不多了。

    memcache快取是單獨的進程,好處是使用進程之間少了快取同步,因為資料在memcache上只有一份,而不是ehcache在每個進程上都有一份;但存取需要進程間通信,多了通訊的開銷。

    回覆
    0
  • 取消回覆