最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用SpringCache進(jìn)行緩存數(shù)據(jù)庫查詢方式

 更新時間:2021年10月27日 16:44:23   作者:牧碼ya  
這篇文章主要介紹了使用SpringCache進(jìn)行緩存數(shù)據(jù)庫查詢方式,具有很好的參考價(jià)值,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

SpringCache進(jìn)行緩存數(shù)據(jù)庫查詢

1、在SpringBoot的啟動類上添加注解@EnableCaching

開啟SpringCache緩存支持

@SpringBootApplication
// 開啟SpringCache緩存支持
@EnableCaching
public class GatheringApplication {
    public static void main(String[] args) {
        SpringApplication.run(GatheringApplication.class, args);
    }
}

2、在service的方法上添加對應(yīng)的注解

/**
 * 根據(jù)ID查詢
 *
 * @param id
 * @return
 */
// 使用SpringCache進(jìn)行緩存數(shù)據(jù)庫查詢
@Cacheable(value = "gathering", key = "#id")
public Gathering findById(String id) {
 return gatheringDao.findById(id).get();
}
/**
 * 修改
 *
 * @param gathering
 */
// 修改數(shù)據(jù)庫數(shù)據(jù)后需要刪除redis中的緩存
@CacheEvict(value = "gathering", key = "#gathering.id")
public void update(Gathering gathering) {
 gatheringDao.save(gathering);
}
/**
 * 刪除
 *
 * @param id
 */
// 刪除數(shù)據(jù)庫數(shù)據(jù)后需要刪除redis中的緩存
@CacheEvict(value = "gathering", key = "#id")
public void deleteById(String id) {
 gatheringDao.deleteById(id);
}

SpringCache 數(shù)據(jù)庫一致性問題

緩存和數(shù)據(jù)庫不一致的問題

先更新數(shù)據(jù)庫,再更新緩存

在這里插入圖片描述

先更新數(shù)據(jù)庫更新成功了,但是更新redis的時候失敗了,這就導(dǎo)致了數(shù)據(jù)庫和Redis里面的數(shù)據(jù)不一致,

解決辦法

先更新緩存,再更新數(shù)據(jù)庫,更新緩存的時候,先刪除緩存,再去更新數(shù)據(jù)庫,再添加緩存 這樣的話即使緩存更新失敗了 緩存里面的數(shù)據(jù)也被刪了,如果刪除緩存都失敗的話,就不更新數(shù)據(jù)庫了,直接拋異常解決,這時候如果后面一個加入緩存失敗的話只是增加了一次查詢數(shù)據(jù)庫的操作而已(下一次查這個數(shù)據(jù)的時候把他加入緩存)

高并發(fā)下redis和數(shù)據(jù)庫不一致問題

在這里插入圖片描述

如果這這兩個操作剛好在中間虛線部分那么緩存里面的數(shù)據(jù)和數(shù)據(jù)庫里面的數(shù)據(jù)就不一樣了,這個時候我們要解決這個問題就得引入分布式鎖

在這里插入圖片描述

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

罗平县| 离岛区| 西昌市| 明水县| 酒泉市| 涿鹿县| 皋兰县| 南充市| 龙里县| 方城县| 德钦县| 安平县| 青州市| 曲麻莱县| 扶风县| 四子王旗| 启东市| 类乌齐县| 浮梁县| 丰宁| 灌云县| 桃江县| 衡山县| 韩城市| 佛坪县| 巩义市| 咸丰县| 蒙城县| 钦州市| 岳普湖县| 宝应县| 韶关市| 岗巴县| 石柱| 班戈县| 武义县| 汤原县| 山阴县| 克山县| 屯昌县| 乌拉特前旗|