SpringCache之 @CachePut的使用
使用CachePut注解,該方法每次都會執(zhí)行,會清除對應的key值得緩存(或者更新),
分為以下兩種情況:
如果返回值null,下次進行該key值查詢時,還會查一次數(shù)據(jù)庫,此時相當于@CacheEvict注解;
如果返回值不為null,此時會進行該key值緩存的更新,更新緩存值為返回的數(shù)據(jù);
分析:情況一返回值為null:
//使用Redis緩存
@Cacheable(value="Manager",key="#id")
public User findById(Integer id) {
System.out.println("---查數(shù)據(jù)庫DB-----");
return userMapper.selectByPrimaryKey(id);
}
@CachePut(value="Manager",key="#manager.getId()")
//@CacheEvict(value="Manager",key="#manager.getId()")//清除數(shù)據(jù)
public User update(User manager) {
userMapper.updateByPrimaryKeySelective(manager);
//return userMapper.selectByPrimaryKey(manager.getId());
return null;
}
情況二返回值不為null:
先進行數(shù)據(jù)id為1的查詢,發(fā)現(xiàn)下次查詢id為1的數(shù)據(jù)不會再查詢DB,直接走緩存;
此時進行id為1數(shù)據(jù)更新操作,并且返回值為null;
進行id為1的數(shù)據(jù)查詢,發(fā)現(xiàn)此時id為1緩存不存在,進行DB查詢;
//使用Redis緩存
@Cacheable(value="Manager",key="#id")
public User findById(Integer id) {
System.out.println("---查數(shù)據(jù)庫DB-----");
return userMapper.selectByPrimaryKey(id);
}
@CachePut(value="Manager",key="#manager.getId()")
//@CacheEvict(value="Manager",key="#manager.getId()")//清除數(shù)據(jù)
public User update(User manager) {
userMapper.updateByPrimaryKeySelective(manager);
return userMapper.selectByPrimaryKey(manager.getId());
//return null;
}
先進行數(shù)據(jù)id為1的查詢,發(fā)現(xiàn)下次查詢id為1的數(shù)據(jù)不會再查詢DB,直接走緩存;
此時進行id為1數(shù)據(jù)更新操作,返回值不為null;
進行id為1的數(shù)據(jù)查詢,發(fā)現(xiàn)此時id為1緩存被更新為更新的數(shù)據(jù),且沒有進行DB查詢操作;
補充:@CachePut和@Cacheable的區(qū)別
@CachePut負責增加緩存
@Cacheable負責查詢緩存,如果沒查到,則將執(zhí)行方法,并將方法的結果增加到緩存
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關文章
詳解MyEclipse中搭建spring-boot+mybatis+freemarker框架
這篇文章主要介紹了詳解MyEclipse中搭建spring-boot+mybatis+freemarker框架,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10
利用Java多線程技術導入數(shù)據(jù)到Elasticsearch的方法步驟
這篇文章主要介紹了利用Java多線程技術導入數(shù)據(jù)到Elasticsearch的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-07-07
SpringBoot實現(xiàn)Word轉PDF和TXT的實踐分享
研發(fā)工作中難免會遇到一些奇奇怪怪的需求,就比如最近,客戶提了個新需求:上傳一個WORD文檔,要求通過系統(tǒng)把該文檔轉換成PDF和TXT,所以本文給大家分享了SpringBoot實現(xiàn)Word轉PDF和TXT的實踐,感興趣的朋友可以參考下2024-08-08
java Split 實現(xiàn)去除一個空格和多個空格
這篇文章主要介紹了java Split 實現(xiàn)去除一個空格和多個空格,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10

