A. ehcache 如何緩存有條件的緩存
ehcache主要是對資料庫訪問的緩存,相同的查詢語句只需查詢一次資料庫,從而提高了查詢的速度
oscache 主要是對頁面的緩存,可以整頁或者指定網頁某一部分緩存,同時指定他的過期時間,這樣在此時間段裡面訪問的數據都是一樣的
hibernate2以前提倡用ehcache
hibernate3後提倡oscache,
B. ehcache緩存無效
分析你的問題的話,還是要一步步如題啊。
你的問題主要還是緩存設進去了 addObject(nodeName, obj);
但是 這部門沒有看到實現
而
this.cacheManager = CacheManager.create();
cache = cacheManager.getCache(cacheName);
沒有看到任何東西。
那麼要是你addObject就跟蹤一下看是否已經緩存成功了呢?
如果是在這部分成功的話,看你的程序 感覺是不是CacheManager 被重復創建了呢?用的不是一個實例?
C. ehcache的默認緩存有什麼用
EhCache裡面有一個CacheManager類型,它負責管理cache。Cache裡面存儲著Element對象,Element必須是key-value對。Cache是實際物理實現的,在內存中或者磁碟。這些組件的邏輯表示就是下面即將要討論的類。他們的方法提供了可編程的訪問方式。
D. 刷新ehcache緩存怎麼刷新
spring 配置文件 <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> <property name="configLocation"> <value>classpath:config/ehcache.xml </value> </property> </bean> <bean id="baseCache" class="org.springframework.cache.ehcache.EhCacheFactoryBean"> <property name="cacheManager" ref="cacheManager" /> <property name="cacheName"> <value>cacheNameXXXX</value> </property> </bean> 在代碼中使用的時候從springContext中取到baseCache 存: baseCache.put(new Element(key,value)); 取:baseCache.get(key); 緩存自動刷新:可以在執行更新、刪除資料庫操作的時候同時對緩存進行更新,也可以直接清除緩存,下一次查詢時再載入,畢竟緩存中的數據不是經常更改的數據。
E. ehcache java 對象緩存怎麼實現
EhCache裡面有一個CacheManager類型,它負責管理cache。Cache裡面存儲著Element對象,Element必須是key-value對。Cache是實際物理實現的,在內存中或者磁碟。這些組件的邏輯表示就是下面即將要討論的類。他們的方法提供了可編程的訪問方式。
CacheManager
負責Cache的創建、訪問、移除。
CacheManager創建
CacheManager支持兩種創建模式:單例(Singleton mode)和實例(InstanceMode)。
在2.5之前的版本中,在同一個JVM中允許存在任意數量相同名字的CacheManager。每調用new CacheManager(...)一次,就會產生一個新的CacheManager實例,而不管已經存在多少個。調用CacheManager.create(...),則返回的是已經存在的那個配置對應的單例CacheManager,如果不存在,則創建一個。
2.5之後的版本,不允許在同一個JVM內存在多個具有相同名字的CacheManager。創建非單例實例的CacheManager()構造函數可能會打破這一規則,但是會拋出NPE異常。如果你的代碼要在同一個JVM創建多個同名的實例,請使用靜態方法CacheManager.create(),總是返回對應名的CacheManager(如果已經存在),否則創建一個
F. 如何查看ehcache緩存的內容
1、ehcache初始化單個cache的時候會創建diskstore,diskstore的目錄位置可以自己去設置,在Cache構造函數中可以指定。
2、這樣Cache的initialise方法會自動讀取diskstore目錄下對應的緩存的data和index文件然後載入到系統中,通過cache的get方法就能讀取到disk中的數據。
3、建議去看下ehcache的源代碼,源代碼還是比較清晰的。
G. springmvc 自帶的緩存和ehcache哪個好
Ehcache
在java項目廣泛的使用。它是一個開源的、設計於提高在數據從RDBMS中取出來的高花費、高延遲採取的一種緩存方案。正因為Ehcache具有健壯性(基於java開發)、被認證(具有apache 2.0 license)、充滿特色(稍後會詳細介紹),所以被用於大型復雜分布式web application的各個節點中。
1. 夠快
Ehcache的發行有一段時長了,經過幾年的努力和不計其數的性能測試,Ehcache終被設計於large, high concurrency systems.
2. 夠簡單
開發者提供的介面非常簡單明了,從Ehcache的搭建到運用運行僅僅需要的是你寶貴的幾分鍾。其實很多開發者都不知道自己用在用Ehcache,Ehcache被廣泛的運用於其他的開源項目
比如:hibernate
3.夠袖珍
關於這點的特性,官方給了一個很可愛的名字small foot print ,一般Ehcache的發布版本不會到2M,V 2.2.3 才 668KB。
4. 夠輕量
核心程序僅僅依賴slf4j這一個包,沒有之一!
5.好擴展
Ehcache提供了對大數據的內存和硬碟的存儲,最近版本允許多實例、保存對象高靈活性、提供LRU、LFU、FIFO淘汰演算法,基礎屬性支持熱配置、支持的插件多
6.監聽器
緩存管理器監聽器 (CacheManagerListener)和 緩存監聽器(CacheEvenListener),做一些統計或數據一致性廣播挺好用的
如何使用?
夠簡單就是Ehcache的一大特色,自然用起來just so easy!
redis
redis是在memcache之後編寫的,大家經常把這兩者做比較,如果說它是個key-value store 的話但是它具有豐富的數據類型,我想暫時把它叫做緩存數據流中心,就像現在物流中心那樣,order、package、store、classification、distribute、end。現在還很流行的LAMP PHP架構 不知道和 redis+mysql 或者 redis + mongodb的性能比較(聽群里的人說mongodb分片不穩定)。
先說說reidis的特性
1. 支持持久化
redis的本地持久化支持兩種方式:RDB和AOF。RDB 在redis.conf配置文件里配置持久化觸發器,AOF指的是redis沒增加一條記錄都會保存到持久化文件中(保存的是這條記錄的生成命令),如果不是用redis做DB用的話還會不要開AOF ,數據太龐大了,重啟恢復的時候是一個巨大的工程!
2.豐富的數據類型
redis 支持 String 、Lists、sets、sorted sets、hashes 多種數據類型,新浪微博會使用redis做nosql主要也是它具有這些類型,時間排序、職能排序、我的微博、發給我的這些功能List 和 sorted set 的強大操作功能息息相關
3.高性能
這點跟memcache很想像,內存操作的級別是毫秒級的比硬碟操作秒級操作自然高效不少,較少了磁頭尋道、數據讀取、頁面交換這些高開銷的操作!這也是NOSQL冒出來的原因吧,應該是高性能
是基於RDBMS的衍生產品,雖然RDBMS也具有緩存結構,但是始終在app層面不是我們想要的那麼操控的。
4.replication
redis提供主從復制方案,跟mysql一樣增量復制而且復制的實現都很相似,這個復制跟AOF有點類似復制的是新增記錄命令,主庫新增記錄將新增腳本發送給從庫,從庫根據腳本生成記錄,這個過程非常快,就看網路了,一般主從都是在同一個區域網,所以可以說redis的主從近似及時同步,同事它還支持一主多從,動態添加從庫,從庫數量沒有限制。 主從庫搭建,我覺得還是採用網狀模式,如果使用鏈式(master-slave-slave-slave-slave·····)如果第一個slave出現宕機重啟,首先從master 接收 數據恢復腳本,這個是阻塞的,如果主庫數據幾TB的情況恢復過程得花上一段時間,在這個過程中其他的slave就無法和主庫同步了。
5.更新快
這點好像從我接觸到redis到目前為止 已經發了大版本就4個,小版本沒算過。redis作者是個非常積極的人,無論是郵件提問還是論壇發帖,他都能及時耐心的為你解答,維護度很高。有人維護的話,讓我們用的也省心和放心。目前作者對redis 的主導開發方向是redis的集群方向。
所以如果希望簡單就用ehcache,如果開發任務比較復雜,希望得到比較多的支持什麼的就redis
H. ehcache可以緩存list嗎
ehcache主要是對資料庫訪問的緩存,相同的查詢語句只需查詢一次資料庫,從而提高了查詢的速度 oscache 主要是對頁面的緩存,可以整頁或者指定網頁某一部分緩存,同時指定他的過期時間,這樣在此時間段裡面訪問的數據都是一樣的 hibernate2以前提倡用
I. ehcache緩存配置問題
分析你的問題的話,還是要一步步如題啊。 你的問題主要還是緩存設進去了 addObject(nodeName, obj); 但是 這部門沒有看到實現 而 this.cacheManager = CacheManager.create(); cache = cacheManager.getCache(cacheName); 沒有看到任何東西。 那麼要是你addObject就跟蹤一下看是否已經緩存成功了呢? 如果是在這部分成功的話,看你的程序 感覺是不是CacheManager 被重復創建了呢?用的不是一個實例?
J. 怎樣用ehcache實現多查詢緩存
用map實現了該功能,感覺還是用第三方的會更好些。
假如用戶分別輸入「1」,「11」,「21」,「31」,「1212」
第一次輸入1,則到資料庫查詢包含1的數據並做緩存。
第二次輸入11,則到緩存中查詢包含11的數據
第三次輸入21,也到緩存中查詢
....
如果輸入22,則到資料庫查詢數據了
以此類推
註:用ehcache
更多0