日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Spring 思維導(dǎo)圖,讓 Spring 不再難懂(cache篇)

 Levy_X 2017-09-04


關(guān)于緩存


緩存是實(shí)際工作中非常常用的一種提高性能的方法。而在java中,所謂緩存,就是將程序或系統(tǒng)經(jīng)常要調(diào)用的對象存在內(nèi)存中,再次調(diào)用時可以快速從內(nèi)存中獲取對象,不必再去創(chuàng)建新的重復(fù)的實(shí)例。這樣做可以減少系統(tǒng)開銷,提高系統(tǒng)效率。

在增刪改查中,數(shù)據(jù)庫查詢占據(jù)了數(shù)據(jù)庫操作的80%以上,而非常頻繁的磁盤I/O讀取操作,會導(dǎo)致數(shù)據(jù)庫性能極度低下。而數(shù)據(jù)庫的重要性就不言而喻了:

  • 數(shù)據(jù)庫通常是企業(yè)應(yīng)用系統(tǒng)最核心的部分

  • 數(shù)據(jù)庫保存的數(shù)據(jù)量通常非常龐大

  • 數(shù)據(jù)庫查詢操作通常很頻繁,有時還很復(fù)雜

在系統(tǒng)架構(gòu)的不同層級之間,為了加快訪問速度,都可以存在緩存


spring cache 特性與缺憾


現(xiàn)在市場上主流的緩存框架有ehcache、redis、memcached。spring cache可以通過簡單的配置就可以搭配使用起來。其中使用注解方式是最簡單的。


Cache 注解


從以上的注解中可以看出,雖然使用注解的確方便,但是缺少靈活的緩存策略,

緩存策略:

  • TTL(Time To Live ) 存活期,即從緩存中創(chuàng)建時間點(diǎn)開始直到它到期的一個時間段(不管在這個時間段內(nèi)有沒有訪問都將過期)

  • TTI(Time To Idle) 空閑期,即一個數(shù)據(jù)多久沒被訪問將從緩存中移除的時間

項(xiàng)目中可能有很多緩存的TTL不相同,這時候就需要編碼式使用編寫緩存。

條件緩存


根據(jù)運(yùn)行流程,如下@Cacheable將在執(zhí)行方法之前( #result還拿不到返回值)判斷condition,如果返回true,則查緩存; 

如下@CachePut將在執(zhí)行完方法后(#result就能拿到返回值了)判斷condition,如果返回true,則放入緩存

 如下@CachePut將在執(zhí)行完方法后(#result就能拿到返回值了)判斷unless,如果返回false,則放入緩存;(即跟condition相反)

如下@CacheEvict, beforeInvocation=false表示在方法執(zhí)行之后調(diào)用(#result能拿到返回值了);且判斷condition,如果返回true,則移除緩存;

小試牛刀,綜合運(yùn)用:


配置 ehcache 與 redis


spring cache集成ehcache,spring-ehcache.xml主要內(nèi)容:

spring cache集成redis,spring-redis.xml主要內(nèi)容:

項(xiàng)目中注解緩存只能配置一個,所以可以通過以下引入哪個配置文件來決定使用哪個緩存。

當(dāng)然,可以通過其他配置搭配使用兩個緩存機(jī)制。比如ecache做一級緩存,redis做二級緩存。

更加詳細(xì)的使用與配置,可以參考項(xiàng)目中spring-shiro-training中有關(guān)spring cache的配置:https://git.oschina.net/wangzhixuan/spring-shiro-training.git


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多