国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

湖南城鄉(xiāng)建設(shè)網(wǎng)站全網(wǎng)絡(luò)品牌推廣

湖南城鄉(xiāng)建設(shè)網(wǎng)站,全網(wǎng)絡(luò)品牌推廣,做美工一般用到的素材網(wǎng)站,大良網(wǎng)站公司系列文章目錄 分頁(yè)查詢–Java項(xiàng)目實(shí)戰(zhàn)篇 全局異常處理–Java實(shí)戰(zhàn)項(xiàng)目篇 完善登錄功能–過濾器的使用 更多該系列文章請(qǐng)查看我的主頁(yè)哦 文章目錄系列文章目錄前言一、Spring Cache介紹二、Spring Cache的使用1. 導(dǎo)入依賴2. 配置信息3. 在啟動(dòng)類上添加注解4. 添加注解4.1 CacheP…

系列文章目錄

分頁(yè)查詢–Java項(xiàng)目實(shí)戰(zhàn)篇
全局異常處理–Java實(shí)戰(zhàn)項(xiàng)目篇
完善登錄功能–過濾器的使用
更多該系列文章請(qǐng)查看我的主頁(yè)哦


文章目錄

  • 系列文章目錄
  • 前言
  • 一、Spring Cache介紹
  • 二、Spring Cache的使用
    • 1. 導(dǎo)入依賴
    • 2. 配置信息
    • 3. 在啟動(dòng)類上添加注解
    • 4. 添加注解
      • 4.1 @CachePut注解
      • 4.2 @CacheEvict注解
      • 4.3 @Cacheable注解
  • 查看Redis存入的數(shù)據(jù)
  • 總結(jié)


前言

在我們學(xué)習(xí)完Redis緩存之后,明白了為什么要使用Redis。也通過學(xué)習(xí)寫代碼練習(xí)時(shí)需要使用Redis進(jìn)行大量的設(shè)置值、刪除值、還有大量的邏輯判斷將數(shù)據(jù)加入或刪除Redis緩存。雖說邏輯方面也比較簡(jiǎn)單,但太過于繁瑣。每個(gè)方法都得注入RedisTemplate,使用redisTemplate.opsForValue().set(phone,code,60L, TimeUnit.SECONDS)這樣的代碼。才能使得數(shù)據(jù)庫(kù)中的數(shù)據(jù)與Redis緩存中的數(shù)據(jù)保持一致從而避免用戶讀到的數(shù)據(jù)是臟數(shù)據(jù)(修改前的數(shù)據(jù),與數(shù)據(jù)庫(kù)的數(shù)據(jù)不一致現(xiàn)象)。

然而Spring就給我們提供了Spring Cache框架,來減少這部分的麻煩。使我們的開發(fā)可以更多的關(guān)注于業(yè)務(wù)邏輯。下面這篇文章我們就來講述這個(gè)框架的使用。


一、Spring Cache介紹

Spring Cache是一個(gè)框架,實(shí)現(xiàn)了基于注解的緩存功能,只需要簡(jiǎn)單地加一個(gè)注解,就能實(shí)現(xiàn)緩存功能。
Spring Cache提供了一層抽象,底層可以切換不同的cache實(shí)現(xiàn)。具體就是通過CacheManager接口來統(tǒng)一不同的緩存技術(shù)。
CacheManager是Spring提供的各種緩存技術(shù)抽象接口。

針對(duì)不同的緩存技術(shù)需要實(shí)現(xiàn)不同的CacheManager:

  • EhCacheCacheManager 使用EhCache作為緩存技術(shù)
  • GuavaCacheManager 使用Google的GuavaCache作為緩存技術(shù)
  • RedisCacheManager 使用Redis作為緩存技術(shù)

這里我們就用RedisCacheManager作為緩存技術(shù)來練習(xí)。

二、Spring Cache的使用

1. 導(dǎo)入依賴

在pom.xml文件中添加redis依賴和spring提供的cache依賴。
代碼如下:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId>
</dependency>

2. 配置信息

在application.yml文件中添加redis的一些基礎(chǔ)信息,和連接Mysql數(shù)據(jù)庫(kù)一樣將基本的密碼,端口等配置上去。time-to-live: 1800000的單位為秒,表示緩存中存入的數(shù)據(jù)在多少秒后清除。

代碼如下:

spring:redis:host: localhostport: 6379#password:database: 0cache:redis:time-to-live: 1800000

3. 在啟動(dòng)類上添加注解

在啟動(dòng)類上添加開啟緩存注解功能的注解:@EnableCaching

代碼如下:

@EnableCaching //開啟緩存注解功能
public class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class,args);log.info("項(xiàng)目啟動(dòng)成功...");}
}

4. 添加注解

4.1 @CachePut注解

@CachePut注解在執(zhí)行添加操作時(shí),將新的數(shù)據(jù)添加到Redis緩存中,以便于數(shù)據(jù)庫(kù)查詢的值和展示的數(shù)據(jù)一致。Redis底層執(zhí)行的是set操作。

注解里的參數(shù)第一個(gè)數(shù)該緩存的名稱“value”,第二個(gè)參數(shù)是設(shè)置一個(gè)key(作為緩存數(shù)據(jù)的key)。如下述代碼就會(huì)將新增的這條數(shù)據(jù)添加到Redis緩存中。

    @PostMapping@CachePut(value = "setmealCache",key = "#setmealDto.categoryId+'_'+#setmealDto.status")public R<String> save(@RequestBody SetmealDto setmealDto){setmealService.saveWithDish(setmealDto);return R.success("新增套餐成功");}

4.2 @CacheEvict注解

@CacheEvict注解執(zhí)行修改、刪除數(shù)據(jù)操作時(shí)刪除對(duì)應(yīng)的所有該名稱(value=值)下的緩存數(shù)據(jù),以便于數(shù)據(jù)庫(kù)查詢的值和展示的數(shù)據(jù)一致。Redis底層執(zhí)行的是del(刪除)操作。

下次在刪除修改完后查詢時(shí)就會(huì)重新執(zhí)行sql語(yǔ)句去數(shù)據(jù)庫(kù)中查詢數(shù)據(jù),這樣就使得數(shù)據(jù)庫(kù)與緩存數(shù)據(jù)一致。

    @PutMapping@CacheEvict(value = "setmealCache",allEntries = true)public R<String> update(@RequestBody SetmealDto setmealDto){setmealService.updateWithDish(setmealDto);return R.success("修改成功");}

4.3 @Cacheable注解

@Cacheable注解和上面的參數(shù)也是相同的,將查詢的數(shù)據(jù)放到Redis中,所以Redis底層代碼也是做的set操作。

    @GetMapping("/list")//將返回的結(jié)果存入redis緩存中@Cacheable(value = "setmealCache",key = "#setmeal.categoryId+'_'+#setmeal.status")public R<List<Setmeal>> list(Setmeal setmeal){LambdaQueryWrapper<Setmeal> queryWrapper=new LambdaQueryWrapper<>();queryWrapper.eq(setmeal.getCategoryId()!=null,Setmeal::getCategoryId,setmeal.getCategoryId());queryWrapper.eq(setmeal.getStatus()!=null,Setmeal::getStatus,setmeal.getStatus());queryWrapper.orderByDesc(Setmeal::getUpdateTime);List<Setmeal> list = setmealService.list(queryWrapper);return R.success(list);}

查看Redis存入的數(shù)據(jù)

在Redis中我們也可以看到和我們注解中的信息能夠?qū)?yīng)的上。
如下圖所示:
在這里插入圖片描述

總結(jié)

這就是Spring Cache框架的簡(jiǎn)單使用,可以更加快捷的將Redis緩存中的數(shù)據(jù)存入或刪除。邏輯方面也不需要我們?nèi)ゾ帉?#xff08;像以前在查詢時(shí)先看緩存中是否有該數(shù)據(jù),如果有直接返回?cái)?shù)據(jù),沒有在進(jìn)行sql語(yǔ)句查詢數(shù)據(jù)庫(kù)將數(shù)據(jù)返回并且存入Redis的邏輯)。學(xué)習(xí)完spring cache框架后我們只需要在方法上加注解設(shè)置value、key的值就可以了。
心態(tài)還需努力呀~

http://aloenet.com.cn/news/37955.html

相關(guān)文章:

  • 怎么給公司建網(wǎng)站河南網(wǎng)站建設(shè)定制
  • 商城網(wǎng)站搜狗優(yōu)化排名
  • wordpress頁(yè)面的評(píng)論功能嘉興網(wǎng)站建設(shè)方案優(yōu)化
  • 有了網(wǎng)站源碼怎么做網(wǎng)站武漢百度推廣多少錢
  • 自己搭建網(wǎng)站的步驟seo搜索引擎優(yōu)化實(shí)訓(xùn)總結(jié)
  • 基于ipv6的網(wǎng)站開發(fā)鄭州百度推廣開戶
  • 網(wǎng)站服務(wù)器搭建的步驟采集站seo課程
  • 海南網(wǎng)站建設(shè)服務(wù)外貿(mào)谷歌seo
  • 萊蕪在線沙總寧波seo在線優(yōu)化方案
  • 鄭州英文網(wǎng)站建設(shè)刷排名seo
  • 網(wǎng)站建設(shè)與管理教學(xué)計(jì)劃長(zhǎng)沙網(wǎng)站se0推廣優(yōu)化公司
  • 如何用電腦做網(wǎng)站服務(wù)器網(wǎng)站正能量免費(fèi)推廣軟件
  • b2c電子商務(wù)網(wǎng)站制作商旅平臺(tái)app下載
  • 愛淘寶淘寶網(wǎng)首頁(yè)seo關(guān)鍵詞排名優(yōu)化技巧
  • 揭陽(yáng)城鄉(xiāng)建設(shè)局網(wǎng)站seo網(wǎng)站關(guān)鍵詞優(yōu)化工具
  • 網(wǎng)上書店網(wǎng)站建設(shè)設(shè)計(jì)的收獲惡意點(diǎn)擊競(jìng)價(jià)是用的什么軟件
  • 世界頂級(jí)網(wǎng)站設(shè)計(jì)谷歌chrome
  • 北京做網(wǎng)站公司北京seo優(yōu)化方案
  • 重慶物流公司網(wǎng)站建設(shè)網(wǎng)站建設(shè)企業(yè)建站
  • 創(chuàng)建個(gè)人網(wǎng)站多少錢外包推廣服務(wù)
  • 網(wǎng)站推廣和宣傳的方法推廣策略有哪些方法
  • 互聯(lián)網(wǎng)軟件外包網(wǎng)站怎么優(yōu)化排名靠前
  • 工商局網(wǎng)站如何做網(wǎng)登2022十大網(wǎng)絡(luò)營(yíng)銷案例
  • php小程序商城青島谷歌優(yōu)化
  • 上海網(wǎng)站建設(shè)公司價(jià)格深圳網(wǎng)站seo服務(wù)
  • 已有網(wǎng)站開發(fā)app終端愛站工具網(wǎng)
  • 做資料網(wǎng)站是自己建服務(wù)器好還是租用好網(wǎng)絡(luò)營(yíng)銷活動(dòng)策劃方案模板
  • 廣東室內(nèi)設(shè)計(jì)公司排名內(nèi)江seo
  • 商丘加盟小吃網(wǎng)站東莞做網(wǎng)站優(yōu)化
  • 專做外貿(mào)庫(kù)存的網(wǎng)站天橋區(qū)seo全網(wǎng)宣傳