最近在做乙個專案,某個介面查詢資料到返回資料總計需要7000+毫秒,一直在考慮優化的問題,優化也有原來的一家一家查詢到一次查詢所有的,在查詢不同天數。結果是1500+,雖然優化了不少,但是資料結構會變化,前台渲染資料會更加麻煩,暫時也沒有更新。所以後來就採用了快取的機制,查詢的資料快取10小時,雖然第一次查詢比較慢,但是以後會好很多。
在使用快取的時候,第一反應是:redis,但是後來還是決定使用ehcache,ehcache主要是用來快取一些簡單的資料。redis太重,並且需要伺服器。
關於redis和ehcache的對比:
需要注意的是: spring 提供了對快取功能的抽象:即允許繫結不同的快取解決方案(如ehcache),但本身不直接提供快取功能的實現。它支援註解方式使用快取,非常方便。
總體流程:
新增依賴
net.sf.ehcache配置bean:ehcachemanage***ctorybean 和 cachemanagerehcache
2.10.4
@configuration在需要快取的方法上新增註解:@cacheable(cachenames = "autotransmission") :名字在xml中需要使用@enablecaching
public class ehcacheconfig
@bean
public cachemanager cachemanager()
}
@cacheable(cachenames = "autotransmission") //快取,儲存10小時在快取xml檔案中配置快取資訊。public ajaxjson autotransmissionsevendays(string industrycode){
<?xml version="1.0" encoding="utf-8"?>到此快取已經可以使用了。
2018-07-09更新:ehcache基於spring的配置確實簡單,並且非常容易使用,但是需要注意的是,如果你重啟服務的話,所有的快取都會丟失,需要重新快取資料。這是因為:ehcache的快取是快取到jvm中的。
ehcache 快取使用
一 詳細配置步驟 1,新增ehcache.xml檔案 將ehcache.xml檔案新增到src路徑下面。ehcache.xml檔案內容如下 2,新增spring配置檔案 二 使用 1,定義ehcache工具方法 public class ehcache public cache getcache p...
EHcache快取使用
1 fifo,first in first out,這個是大家最熟的,先進先出。2 lfu,less frequently used,就是上面例子中使用的策略,直白一點就是講一直以來最少被使用的。如上面所講,快取的元素有乙個 hit 屬性,hit 值最小的將會被清出快取。3 lru,least re...
Shiro 使用EhCache快取
在shiro中加入快取可以使許可權相關操作盡可能快,避免頻繁訪問資料庫獲取許可權資訊,因為對於乙個使用者來說,其許可權在短時間內基本是不會變化的。這對資料庫來說是沒必要的消耗。接下來使用快取來解決這個問題。引入ehcache的相關依賴 org.apache.shiro shiro ehcache 1...