日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

SpringBoot集成cache緩存的實現

瀏覽:97日期:2023-03-05 13:01:26
前言

日常開發中,緩存是解決數據庫壓力的一種方案,通常用于頻繁查詢的數據,例如新聞中的熱點新聞,本文記錄springboot中使用cache緩存。

官方文檔介紹:https://docs.spring.io/spring-boot/docs/2.1.0.RELEASE/reference/htmlsingle/#boot-features-caching-provider-generic

工程結構

SpringBoot集成cache緩存的實現

代碼編寫

pom引入依賴,引入cache緩存,數據庫使用mysql,ORM框架用jpa

<!--添加springdata-cache依賴 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId></dependency><!-- 引入ehcache支持 --><dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache</artifactId></dependency><!--添加springdata-jpa依賴 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId></dependency><!--添加MySQL驅動依賴 --><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId></dependency>

配置文件

server.port=10010spring.application.name=springboot-cachespring.cache.type=ehcachespring.cache.ehcache.config=classpath:/ehcache.xml

ehcache.xml

<?xml version='1.0' encoding='UTF-8'?><ehcache xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:noNamespaceSchemaLocation='http://ehcache.org/ehcache.xsd' updateCheck='false'> <!-- 磁盤緩存位置 --> <diskStore path='java.io.tmpdir'/> <!-- maxEntriesLocalHeap:堆內存中最大緩存對象數,0沒有限制 --> <!-- maxElementsInMemory: 在內存中緩存的element的最大數目。--> <!-- eternal:elements是否永久有效,如果為true,timeouts將被忽略,element將永不過期 --> <!-- timeToIdleSeconds:發呆秒數,發呆期間未訪問緩存立即過期,當eternal為false時,這個屬性才有效,0為不限制 --> <!-- timeToLiveSeconds:總存活秒數,當eternal為false時,這個屬性才有效,0為不限制 --> <!-- overflowToDisk: 如果內存中數據超過內存限制,是否要緩存到磁盤上 --> <!-- statistics:是否收集統計信息。如果需要監控緩存使用情況,應該打開這個選項。默認為關閉(統計會影響性能)。設置statistics='true'開啟統計 --> <!--默認緩存無過期時間,但 600 秒內無人訪問緩存立即過期 --> <defaultCache maxElementsInMemory='1000' eternal='false' timeToIdleSeconds='600' timeToLiveSeconds='0' overflowToDisk='false'> </defaultCache> <!--xx業務緩存在有效的 120 秒內,如果連續 60 秒未訪問緩存,則緩存失效。就算有訪問,也只會存活 120 秒。 --> <cache name='myCache' maxElementsInMemory='1000' eternal='false' timeToIdleSeconds='120' timeToLiveSeconds='0' overflowToDisk='false'> </cache></ehcache>

先寫一個套tb_user表的CRUD代碼

SpringBoot集成cache緩存的實現

@RestController@RequestMapping('/tbUser/')public class TbUserController { @Autowired private TbUserService tbUserService; //方便測試暫時改成GetMapping @GetMapping('list')// @PostMapping('list') public List<TbUser> list(TbUser entityVo) {return tbUserService.list(entityVo); } @GetMapping('get/{id}') public TbUser get(@PathVariable('id')Integer id) {return tbUserService.get(id); } //方便測試暫時改成GetMapping @GetMapping('save')// @PostMapping('save') public TbUser save(TbUser entityVo) {return tbUserService.save(entityVo); } @GetMapping('delete/{id}') public Integer delete( @PathVariable('id') Integer id) {return tbUserService.delete(id); }}

opjo實體類要實現序列化

@Entity@Table(name = 'tb_user')@Datapublic class TbUser implements Serializable { @Id @GeneratedValue(strategy= GenerationType.IDENTITY) private Integer id;//表id private String username;//用戶名 private String password;//密碼 private Date created;//創建時間 private Integer descriptionId;//關聯詳情id}

serviceImpl中,使用注解來開啟緩存

@Service@Transactional@CacheConfig(cacheNames = {'myCache'})public class TbUserServiceImpl implements TbUserService{ @PersistenceContext private EntityManager em; @Autowired private TbUserRepository tbUserRepository; //@Cacheable緩存數據:key為userList,value為返回值List<TbUser> @Cacheable(key = '’userList’') @Override public List<TbUser> list(TbUser entityVo) {System.out.println('獲取list用戶列表緩存數據,'+new Date());return tbUserRepository.findAll(Example.of(entityVo)); } //@Cacheable緩存數據:key為參數id,value為返回值TbUser @Cacheable(key = '#id') @Override public TbUser get(Integer id) {System.out.println('獲取數據緩存,key:'+id);Optional<TbUser> optionalE = tbUserRepository.findById(id);if (!optionalE.isPresent()) { throw new RuntimeException('ID不存在!');}return optionalE.get(); } //@CachePut緩存新增的或更新的數據到緩存,其中緩存的名稱為people,數據的key是person的id @CachePut(key = '#entityVo.id') // @CacheEvict從緩存中刪除key為參數userList的數據 @CacheEvict(key = '’userList’') @Override public TbUser save(TbUser entityVo) {System.out.println('新增/更新緩存,key:'+entityVo.getId());//entityVo傳啥存啥,會全部更新return tbUserRepository.save(entityVo); } //清空所有緩存 @CacheEvict(allEntries=true) @Override public Integer delete(Integer id) {System.out.println('清空所有緩存');tbUserRepository.deleteById(id);return id; }}

效果演示

http://localhost:10010/tbUser/save?id=2&username=李四

調用save方法,key為2,value為當前tbUser對象的數據被緩存下來

SpringBoot集成cache緩存的實現

SpringBoot集成cache緩存的實現

http://localhost:10010/tbUser/get/2

當我們調用get方法時,直接獲取緩存數據,控制臺啥也不打印,連serviceImpl的get方法都不進去(可以打斷點調試)

SpringBoot集成cache緩存的實現

SpringBoot集成cache緩存的實現

http://localhost:10010/tbUser/save?id=2&username=王五

當我們再次調用save方法更新username時,緩存數據也被更新

SpringBoot集成cache緩存的實現

SpringBoot集成cache緩存的實現

http://localhost:10010/tbUser/get/2

再次調用get接口,直接返回緩存數據,后臺也是方法都不進去,啥也不打印

SpringBoot集成cache緩存的實現

SpringBoot集成cache緩存的實現

http://localhost:10010/tbUser/delete/2

調用delete接口,刪除數據,同時刪除緩存

SpringBoot集成cache緩存的實現

SpringBoot集成cache緩存的實現

再次調用get接口,發現緩存數據被清除,查詢數據庫

SpringBoot集成cache緩存的實現

http://localhost:10010/tbUser/list

首次調用list接口,key為userList的,value為用戶集合數據被緩存下來,再次調用直接返回緩存數據

SpringBoot集成cache緩存的實現

SpringBoot集成cache緩存的實現

當調用save接口,數據更新,刪除key為userList的緩存,再次調用list時,重新查庫并設置緩存

SpringBoot集成cache緩存的實現

我們配置了緩存發呆時間,當120秒內未使用該緩存,立即過期,一直用就會一直存在

我們先同時訪問兩個接口list、get,list接口2分鐘后再次訪問,get接口不能超過2分鐘是不是訪問一下,結果如預期

SpringBoot集成cache緩存的實現

PS:原先使用了這個jar包,有報錯

<dependency> <groupId>org.ehcache</groupId> <artifactId>ehcache</artifactId> <version>3.8.1</version> </dependency>

后面改成用上面“代碼編寫”里pom中引的jnet.sf.ehcache下面的ar

后記

緩存除了能緩解數據庫壓力,還能做用戶登錄狀態控制,例如:用戶登錄成功后cookie中保存頒發的token令牌設置永不過期,緩存存活時間也設置永不過期,發呆時間設置1天,這樣只有用戶在1天內有訪問緩存接口,那他就可以一直保留登錄狀態,直至有其他業務將token或者緩存清掉。

springboot使用cache緩存暫時先記錄到這,后續有空再進行補充。

代碼開源

代碼已經開源、托管到我的GitHub、碼云:

GitHub:https://github.com/huanzi-qch/springBoot

碼云:https://gitee.com/huanzi-qch/springBoot

到此這篇關于SpringBoot集成cache緩存的實現的文章就介紹到這了,更多相關SpringBoot cache緩存內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲欧美在线综合| 一区二区三区网站| 99综合视频| 国际精品欧美精品| 欧美一级全黄| 日韩一级欧洲| 在线人成日本视频| 热久久久久久| 免费看的黄色欧美网站| 日韩电影在线视频| 成人在线丰满少妇av| 国产精品videossex久久发布| 久久国产精品久久久久久电车| 激情黄产视频在线免费观看| 日韩激情一二三区| 美女精品在线观看| 国产精品av久久久久久麻豆网| 97人人精品| www.九色在线| 国产一区不卡| 精品国产网站| 久久精品午夜| 精品久久网站| 国产精品成人**免费视频 | 久久免费影院| 国产精品一站二站| 国产精品九九| 老牛国内精品亚洲成av人片| 国产极品一区| 日韩高清不卡在线| 日韩精品国产欧美| 国产私拍福利精品视频二区| 欧美中文高清| **爰片久久毛片| 国产精品夜夜夜| 欧美精品不卡| 色婷婷色综合| 久久精品亚洲人成影院| 国产日韩电影| 悠悠资源网久久精品| 日本va欧美va瓶| 欧美日韩99| 麻豆视频久久| 成人综合一区| 日韩成人精品一区| 久久国产主播| 激情久久久久久| 久久要要av| 欧美精品激情| 蜜臀久久久久久久| 国产亚洲高清一区| 高潮久久久久久久久久久久久久| 红杏一区二区三区| 成人羞羞视频在线看网址| 精品免费av在线| 欧美在线网站| 日韩三级视频| 欧美激情福利| 秋霞影视一区二区三区| 日韩高清中文字幕一区二区| 中文字幕高清在线播放| 婷婷久久一区| 国产成人精品亚洲线观看| 欧美一级精品| 无码日韩精品一区二区免费| 国产精品1luya在线播放| 在线天堂资源www在线污| 亚洲性图久久| 日韩极品在线观看| 激情黄产视频在线免费观看| 亚洲欧美成人综合| 国产精品亚洲欧美日韩一区在线 | 99国产精品免费视频观看| 黄色成人在线网址| 日本少妇精品亚洲第一区| 成午夜精品一区二区三区软件| 在线精品小视频| 国产色99精品9i| 欧美性感美女一区二区| 午夜亚洲福利| 久久91导航| 日韩精品国产精品| 美女久久久精品| jiujiure精品视频播放| 欧美精品国产| 桃色一区二区| 国产乱码精品一区二区亚洲| 伊人久久大香线蕉av不卡| 日本不卡的三区四区五区| 天堂√中文最新版在线| 免费观看日韩电影| 国产成人精品福利| 老司机精品久久| 国产成人精品一区二区免费看京| 欧美综合二区| 国产不卡一区| 日本精品一区二区三区在线观看视频| 国产在线观看www| 日韩国产在线观看一区| 日韩精品看片| 国产免费av国片精品草莓男男| 久久人人精品| 久久狠狠久久| 在线成人直播| а√在线中文在线新版| 日韩福利视频导航| 黄色免费成人| 亚洲天堂av影院| 88久久精品| 亚洲性色视频| 久久av免费| 色婷婷成人网| 欧美日韩精品免费观看视频完整| 国产精品国码视频| 最新国产精品视频| 999国产精品999久久久久久| 国产精品久久久久久久久久久久久久久 | 欧美成a人片免费观看久久五月天| 久久裸体视频| 红桃视频欧美| 亚洲精品网址| 亚洲一区欧美| 99久久精品费精品国产| 欧美不卡高清| 国产亚洲欧美日韩精品一区二区三区 | 欧美精品一二| 日韩精品电影| 成人片免费看| 国产图片一区| 国产精品xxxav免费视频| 91精品视频一区二区| 欧美精品中文| 国产精品xvideos88| 久久香蕉精品香蕉| av中文字幕在线观看第一页| 国产精品午夜一区二区三区| 国产情侣一区| 精品久久久久久久| 日韩精品永久网址| 激情久久久久久久| 亚洲深夜av| 日本麻豆一区二区三区视频| 国产精品毛片aⅴ一区二区三区| 麻豆精品在线观看| 福利在线免费视频| 亚洲无线一线二线三线区别av| 在线亚洲欧美| 91精品视频一区二区| 免费在线日韩av| 成人美女视频| 蜜桃视频欧美| 在线精品视频一区| 91久久精品无嫩草影院| 麻豆精品蜜桃视频网站| 三上悠亚国产精品一区二区三区| 午夜精品免费| 日韩一区二区三区免费视频| 国产精品视频一区二区三区综合| 麻豆一区在线| 99成人在线视频| 一区二区国产在线观看| 欧美激情福利| 国内亚洲精品| 日本午夜精品| 在线看片国产福利你懂的| 国产综合视频| 亚洲欧洲国产精品一区| 国内揄拍国内精品久久| 尤物网精品视频| 国产精品videossex久久发布 | 国产精品成人3p一区二区三区| 日韩一区二区三区免费播放| 在线一区视频| 国产精品任我爽爆在线播放| 日韩成人亚洲| 日本va欧美va瓶| 亚洲啊v在线| 蜜臀a∨国产成人精品| 国产精品扒开腿做爽爽爽软件| 久久精品高清| 国产亚洲一区二区三区不卡| 少妇久久久久| 日韩精品欧美成人高清一区二区| 丁香婷婷久久| 视频一区中文字幕国产| 欧美精品不卡| 久久国产88| 日韩深夜视频| 日韩综合一区二区| 亚洲日本网址| 日韩va欧美va亚洲va久久| 日韩不卡免费高清视频| 美国三级日本三级久久99 | 日韩一区二区久久| 久久只有精品| 亚洲欧美在线专区| 日韩精品麻豆| 国产日韩免费| 欧美日韩四区| 黑森林国产精品av|