成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SpringBoot-緩存Ehcache的使用

開發(fā)
Spring緩存(EhCache)是在Spring3.1開始引入的,但是其本身只提供了緩存接口,不提供具體緩存的實現(xiàn),其實現(xiàn)需要第三方緩存實現(xiàn)(Generic、EhCache、Redis等)。

spring緩存(EhCache)是在Spring3.1開始引入的,但是其本身只提供了緩存接口,不提供具體緩存的實現(xiàn),其實現(xiàn)需要第三方緩存實現(xiàn)(Generic、EhCache、Redis等)。EhCache、Redis比較常用,使用Redis的時候需要先安裝Redis服務(wù)器。

為什么引入緩存

  • 提升服務(wù)性能:例如在項目開發(fā)完成以后,隨著時間推移,各種數(shù)據(jù)急劇增加,在數(shù)據(jù)不斷增加的情況下,一個簡單的Select * from Student,都可能非常耗時,變成我們用戶體驗的痛點。并且在分布式遠(yuǎn)程調(diào)用的過程中,網(wǎng)絡(luò)開銷本來就比較大,如果再加上上面情況導(dǎo)致整體響應(yīng)時間變大,得不償失,因此緩存是十分必要的
  • 減少數(shù)據(jù)庫壓力:當(dāng)數(shù)據(jù)增大,請求變多以后,數(shù)據(jù)庫的壓力將大大增加,緩存的出現(xiàn)可以減輕數(shù)據(jù)庫壓力。

SpringBoot抽象緩存

剛才說了Spring3.1引入了緩存接口,可以對接不同的緩存技術(shù)主要接口有:

  • org.springframework.cache.Cache (定義緩存的接口)。
  • org.springframework.cache.CacheManager:緩存管理器針對不同的緩存技術(shù),有不同的緩存管理器,SpringBoot會按照以下順序自動配置這些框架提供的緩存管理器。
  • Generic。
  • JCache (JSR-107) (EhCache 3, Hazelcast, Infinispan, and others)。
  • EhCache 2.x。
  • Hazelcast。
  • Infinispan。
  • Couchbase。
  • Redis。
  • Caffeine。
  • Simple。

代碼實現(xiàn)

添加緩存依賴

在pom.xml中添加spring-boot-starter-cache。

<!--數(shù)據(jù)緩存-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>

開啟緩存

使用注解**@EnableCaching**注解開啟緩存功能。

@Configuration
@EnableCaching
public class MyCacheConfig {
}

數(shù)據(jù)緩存

在緩存操作中常用的注解有以下:

@Cacheable

@Cacheable可以標(biāo)記在方法和類上面,在執(zhí)行的時候會先看緩存數(shù)據(jù)是否存在,如果存在直接返回緩存數(shù)據(jù),如果不存在就會支付方法并將緩存返回到緩存中,常用的三個屬性。

value:用于說明緩存的名稱,可以指定一個或者多個。

key:緩存的鍵值可以為空,如果不為空需要安裝SpEl表達(dá)方式編寫。

condition:緩存的條件,可以為空,如果使用按照SpEl方式編寫,返回true則緩存,false不緩存。

 @Cacheable(value = "student",key = "#id",condition = "#id>11")
@Override
public Student findById(Long id) {
return studentMapper.findById(id);
}

@CachePut

@CachePut可以標(biāo)注在方法和類上面,常用屬性和**@Cacheable相同,不同之處在于執(zhí)行方法前不會查看緩存中是否存在,而是方法執(zhí)行完成以后將結(jié)果放入緩存中,多用于數(shù)據(jù)的添加和修改。

   @CachePut(value = "student",key = "#student.id")
@Override
public Student updateStudent(Student student){
studentMapper.updateStudent(student);
return student;
}

@CacheEvict

@CacheEvict可以標(biāo)注在方法和類方面,用于清除緩存,常用注解除了和@Cacheable相同以外還有。

  • allEntries:是否清空所有緩存,默認(rèn)false,當(dāng)為true時,調(diào)用方法后就會清空所有緩存。
  • beforeInvocation:是否在方法執(zhí)行前情況,默認(rèn)false,為true的時候,在方法調(diào)用前就會清空緩存,false的時候如果方法拋出異常則不會清除緩存。
 @CacheEvict(value = "student",key = "#id",allEntries = true,beforeInvocation = true)
public void deleteStudent(@Param("id") Long id){
System.out.println("deleteStudent數(shù)據(jù)庫..." + id);
studentMapper.deleteStudent(id);
}

集成EhCache

因為springboot只是緩存的抽象,要具體實現(xiàn)緩存還有依賴第三方緩存框架,我們這里介紹EhCache框架實現(xiàn)緩存。

添加EhCache依賴

在pom.xml中添加EhCache依賴。

<!-- https://mvnrepository.com/artifact/net.sf.ehcache/ehcache -->
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>2.10.9.2</version>
</dependency>

添加Ehcache相關(guān)配置

1、在src\main\resources路徑下添加ehcache.xml文件。

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ehcache.xsd">
<cache name="student"
maxElementsInMemory="10000"
eternal="true"
overflowToDisk="true"
diskPersistent="true"
diskExpiryThreadIntervalSeconds="600"/>
</ehcache>

注解含義:

  • name:緩存名稱和緩存注解中value屬性相同即可。
  • maxElementsInMemory:緩存的最大數(shù)量。
  • overflowToDisk:緩存達(dá)到最大數(shù)量,會寫入到磁盤。
  • eternal:緩存是否永久有效,如果設(shè)置為true,則timeout無效。
  • diskExpiryThreadIntervalSeconds:磁盤失效線程運行時間間隔,默認(rèn)120s。

2、在application.yml添加ehcache.xml的路徑。

spring:
cache:
type: ehcache
ehcache:
config: classpath:/ehcache.xml

ehcache.config的默認(rèn)路徑為src\main\resourcesehcache.xm,所以也可以不配置。

測試

1、測試@Cacheable(value = "student",key = "#id",cndition = "#id>11")使用postman測試接口http://localhost:8899/student/select/11。

點擊兩次我們在console發(fā)現(xiàn),兩次都進(jìn)入了方法,這是因為我們有判斷添加id大于11才會放入緩存中。

如果id>11例如http://localhost:8899/student/select/13,那么點擊兩次的情況下,我們只進(jìn)入了方法一次。

其他測試可以自行測試,這里就不過多測試了。

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2023-02-14 07:47:20

SpringBootEhcache

2023-01-11 15:11:36

SpringEhcache

2014-12-31 09:56:29

Ehcache

2014-12-31 09:45:48

EhCache

2023-10-12 08:00:48

2021-09-26 05:02:00

緩存Ehcache用法

2019-04-23 08:42:42

EhcacheMemcacheRedis

2012-02-01 15:53:03

JavaEhcache

2009-09-21 17:23:49

Hibernate使用

2021-02-17 21:04:03

Ehcache緩存Java

2021-11-04 08:04:49

緩存CaffeineSpringBoot

2020-08-19 17:56:46

緩存Redis集中式

2024-02-28 09:54:07

線程池配置

2011-11-16 10:46:33

Ehcache

2009-09-21 14:59:31

Hibernate二級

2024-10-28 07:15:00

SpringBoot緩存預(yù)熱數(shù)據(jù)加載

2024-12-18 17:20:07

緩存預(yù)熱緩存系統(tǒng)Spring

2019-07-10 15:41:50

RedisJava緩存

2018-05-15 10:54:33

NginxRedisEhcache

2024-04-29 18:55:16

緩存Spring性能
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 伊大人久久 | 国产精品视频一区二区三区不卡 | 久久天天躁狠狠躁夜夜躁2014 | 久久精品一区 | 黄色国产大片 | 日韩综合网| 欧美日韩电影一区二区 | 成年人精品视频在线观看 | 日韩欧美第一页 | 亚洲成av人影片在线观看 | 一级免费视频 | 国产精品免费在线 | 国产日韩精品视频 | 成人国产a | 请别相信他免费喜剧电影在线观看 | 国产99视频精品免费播放照片 | 久久黄视频 | 国产www成人 | 四虎影院一区二区 | 日一区二区 | 成人性生交大片免费看r链接 | 国产视频欧美 | 亚州精品天堂中文字幕 | 男人的天堂一级片 | 日本精品在线观看 | 电影午夜精品一区二区三区 | 久久精品日产第一区二区三区 | 免费人成在线观看网站 | 国产一级片免费在线观看 | 日韩精品免费在线观看 | 蜜桃综合在线 | 一区二区三区免费 | 国产永久免费 | 国产黄色免费网站 | 91极品视频 | 日韩视频在线观看 | 日韩at| 国产色片 | 黄色免费在线观看 | 伊人热久久 | 国产精品三级 |