這篇文章主要介紹了SpringBoot整合Ehcache實現(xiàn)熱點數(shù)據(jù)緩存的方法是什么的相關(guān)知識,內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇SpringBoot整合Ehcache實現(xiàn)熱點數(shù)據(jù)緩存的方法是什么文章都會有所收獲,下面我們一起來看看吧。
成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計制作、網(wǎng)站設(shè)計、紅山網(wǎng)絡(luò)推廣、小程序制作、紅山網(wǎng)絡(luò)營銷、紅山企業(yè)策劃、紅山品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供紅山建站搭建服務(wù),24小時服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com
EhCache 是一個純 Java 的進程內(nèi)緩存框架,具有快速、精干等特點,是 Hibernate 中默認(rèn)CacheProvider。Ehcache 是一種廣泛使用的開源 Java 分布式緩存。主要面向通用緩存,Java EE 和輕量級容器。它具有內(nèi)存和磁盤存儲,緩存加載器,緩存擴展,緩存異常處理程序,一個 gzip 緩存 servlet 過濾器,支持 REST 和 SOAP api 等特點。
特性
快速、簡單
多種緩存策略
緩存數(shù)據(jù)有兩級:內(nèi)存和磁盤,因此無需擔(dān)心容量問題
緩存數(shù)據(jù)會在虛擬機重啟的過程中寫入磁盤
可以通過RMI、可插入API等方式進行分布式緩存
具有緩存和緩存管理器的偵聽接口
支持多緩存管理器實例,以及一個實例的多個緩存區(qū)域
提供Hibernate的緩存實現(xiàn)
與 redis 相比
EhCache 直接在jvm虛擬機中緩存,速度快,效率高;但是緩存共享麻煩,集群分布式應(yīng)用不方便。
Redis 是通過 Socket 訪問到緩存服務(wù),效率比 EhCache 低,比數(shù)據(jù)庫要快很多,處理集群和分布式緩存方便,有成熟的方案。如果是單個應(yīng)用或者對緩存訪問要求很高的應(yīng)用,用 EhCache 。如果是大型系統(tǒng),存在緩存共享、分布式部署、緩存內(nèi)容很大的,建議用 Redis。
EhCache 也有緩存共享方案,不過是通過 RMI 或者 Jgroup 多播方式進行廣播緩存通知更新,緩存共享復(fù)雜,維護不方便;簡單的共享可以,但是涉及到緩存恢復(fù),大數(shù)據(jù)緩存,則不合適。
在 pom.xml 文件中,引入 Ehcache 的依賴信息
net.sf.ehcache ehcache 2.10.6 org.springframework.boot spring-boot-starter-cache
創(chuàng)建 EhCache 的配置文件:ehcache.xml
默認(rèn)情況下,EhCache 的配置文件名是固定的,ehcache.xml,如果需要更改文件名,需要在 application.yml 文件中指定配置文件位置,如:
spring: cache: type: ehcache ehcache: config: classpath:/ehcache.xml
指定了 EhCache 的配置文件位置
開啟緩存的方式,也和 Redis 中一樣,在啟動類上添加 @EnableCaching 注解即可:
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCaching; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @SpringBootApplication @EnableCaching public class SbmApplication { public static void main(String[] args) { SpringApplication.run(SbmApplication.class, args); } }
這個注解在類上使用,用來描述該類中所有方法使用的緩存名稱,當(dāng)然也可以不使用該注解,直接在具體的緩存注解上配置名稱,示例代碼如下:
@Service @CacheConfig(cacheNames = "user") public class UserServiceImpl implements UserService { }
這個注解一般加在查詢方法上,表示將一個方法的返回值緩存起來,默認(rèn)情況下,緩存的 key 就是方法的參數(shù),緩存的 value 就是方法的返回值。示例代碼如下:
@Override @Cacheable(value = "user", key = "#id") public User getUserById(Long id) { return userMapper.getUserById(id); }
如果在類上沒有加入 @CacheConfig,我們則需要使用 value 來指定緩存名稱
這里如果需要多個 key 時,需要使用 “:” 來連接,如:
@Cacheable(value = "user", key = "#name+':'+#phone")
這個注解一般加在更新方法上,當(dāng)數(shù)據(jù)庫中的數(shù)據(jù)更新后,緩存中的數(shù)據(jù)也要跟著更新,使用該注解,可以將方法的返回值自動更新到已經(jīng)存在的 key 上,示例代碼如下:
@Override @CachePut(value = "user", key = "#id") public User updateUserById(User user) { return userMapper.updateUserById(user); }
這個注解一般加在刪除方法上,當(dāng)數(shù)據(jù)庫中的數(shù)據(jù)刪除后,相關(guān)的緩存數(shù)據(jù)也要自動清除,該注解在使用的時候也可以配置按照某種條件刪除( condition 屬性)或者或者配置清除所有緩存( allEntries 屬性),示例代碼如下:
@Override @CacheEvict(value = "user", key = "#id") public void deleteUserById(Long id) { userMapper.deleteUserById(id); }
關(guān)于“SpringBoot整合Ehcache實現(xiàn)熱點數(shù)據(jù)緩存的方法是什么”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“SpringBoot整合Ehcache實現(xiàn)熱點數(shù)據(jù)緩存的方法是什么”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。