国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

springboot項目外賣管理 day08-緩存優(yōu)化

這篇具有很好參考價值的文章主要介紹了springboot項目外賣管理 day08-緩存優(yōu)化。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、緩存優(yōu)化

問題說明

springboot項目外賣管理 day08-緩存優(yōu)化,springboot項目,spring boot,緩存,后端

環(huán)境搭建

導(dǎo)入maven坐標(biāo)

在項目的pom.xm1文件中導(dǎo)入spring data redis的maven坐標(biāo):

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

配置yml文件

在項目的application.yml中加入redis相關(guān)配置:

spring
    redis:
        host:172.17.2.94
        port: 6379
        password: root@123456
        database: 0

設(shè)置序列化器,編寫配置類

在項目中加入配置類RedisConfig:

@Configuration
public class RedisConfig extends CachingConfigurerSupport {
    @Bean
    public RedisTemplate<Object,Object> redisTemplate(RedisConnectionFactory connectionFactory){
        RedisTemplate<Object,Object> redisTemplate = new RedisTemplate<>();
        //默認(rèn)的Key序列化器為: JdkSerializationRedisSerializer
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setConnectionFactory( connectionFactory) ;
        return redisTemplate;
    }
}

也可以用StringRedisTemplate就不用配置類

緩存短信驗證碼

實現(xiàn)思路
前面我們已經(jīng)實現(xiàn)了移動端手機驗證碼登錄,隨機生成的驗證碼我們是保存在HttpSession中的?,F(xiàn)在需要改造為將驗證碼緩存在Redis中,具體的實現(xiàn)思路如下:

1、在服務(wù)端UserController中注入RedisTemplate對象,用于操作Redis

@Autowired
private RedisTemplate redisTemplate;

2、在服務(wù)端UserController的sendMsg方法中,將隨機生成的驗證碼緩存到Redis中,并設(shè)置有效期為5分鐘

redisTemplate.opsForValue().set(phone,code,5, TimeUnit.MINUTES);

3、在服務(wù)端UserController的login方法中,從Redis中獲取緩存的驗證碼,如果登錄成功則刪除Redis中的驗證碼

//從redis中獲取保存的驗證碼
Object codeInSession =redisTemplate.opsForValue().get(phone);
//如果用戶登錄成功則刪除Redis中緩存的驗證碼
redisTemplate.delete(phone);

緩存菜品數(shù)據(jù)

實現(xiàn)思路

前面我們已經(jīng)實現(xiàn)了移動端菜品查看功能,對應(yīng)的服務(wù)端方法為DishController的list方法,此方法會根據(jù)前端提交的查詢條件進(jìn)行數(shù)據(jù)庫查詢操作。在高并發(fā)的情況下,頻繁查詢數(shù)據(jù)庫會導(dǎo)致系統(tǒng)性能下降,服務(wù)端響應(yīng)時間增長?,F(xiàn)在需要對此方法進(jìn)行緩存優(yōu)化,提高系統(tǒng)的性能。

具體的實現(xiàn)思路如下:
1、改造DishController的list方法,先從Redis中獲取菜品數(shù)據(jù),如果有則直接返回,無需查詢數(shù)據(jù)庫;如果沒有則查詢數(shù)據(jù)庫,并將查詢到的菜品數(shù)據(jù)放入Redis。

List<DishDto> dishDtoList=null;
//動態(tài)構(gòu)造Key
String key="dish_"+dish.getCategoryId()+"_"+dish.getStatus();
//先從redis中獲取緩存數(shù)據(jù)
dishDtoList= (List<DishDto>) redisTemplate.opsForValue().get(key);
if(dishDtoList!=null){
    //如果存在,則直接返回,無需查詢數(shù)據(jù)庫
    return R.success(dishDtoList);
}

...
//如果不存在,則查詢數(shù)據(jù)庫,并且將查詢到的菜品數(shù)據(jù)添加到緩存中
redisTemplate.opsForValue().set(key,dishDtoList,60, TimeUnit.MINUTES);

2、改造DishController的save和update方法,加入清理緩存的邏輯

//清理所有菜品緩存數(shù)據(jù)
//Set keys = redisTemplate.keys("dish_*");
//redisTemplate.delete(keys);

//清理某個分類下面的菜品緩存數(shù)據(jù)
String key="dish_"+dishDto.getCategoryId()+"_"+dishDto.getStatus();
redisTemplate.delete(key);

注意:在使用緩存過程中,要注意保證數(shù)據(jù)庫中的數(shù)據(jù)和緩存中的數(shù)據(jù)一致,如果數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生變化,需要及時清理緩存數(shù)據(jù)。

SpringCache

Spring Cache介紹

Spring cache是一個框架,實現(xiàn)了基于注解的緩存功能,只需要簡單地加一個注解,就能實現(xiàn)緩存功能。
Spring Cache提供了一層抽象,底層可以切換不同的cache實現(xiàn)。具體就是通過CacheManager接口來統(tǒng)一不同的緩存技術(shù)。
CacheManager是Spring提供的各種緩存技術(shù)抽象接口。
針對不同的緩存技術(shù)需要實現(xiàn)不同的CacheManager:
springboot項目外賣管理 day08-緩存優(yōu)化,springboot項目,spring boot,緩存,后端

Spring Cache常用注解

springboot項目外賣管理 day08-緩存優(yōu)化,springboot項目,spring boot,緩存,后端
在spring boot項目中,使用緩存技術(shù)只需在項目中導(dǎo)入相關(guān)緩存技術(shù)的依賴包,并在啟動類上使用@EnableCaching開啟緩存支持即可。
例如,使用Redis作為緩存技術(shù),只需要導(dǎo)入Spring data Redis的maven坐標(biāo)即可。

Spring Cache使用方式

在Spring Boot項目中使用Spring Cache的操作步驟(使用redis緩存技術(shù));

1、導(dǎo)入maven坐標(biāo)

<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

spring:
    cache:
        redis:
            time-to-live: 1800000#設(shè)置緩存有效期

3、在啟動類上加入@EnableCaching注解,開啟緩存注解功能
4、在Controller的方法上加入@Cacheable、@CacheEvict等注解,進(jìn)行緩存操作

緩存套餐數(shù)據(jù)

實現(xiàn)思路

前面我們已經(jīng)實現(xiàn)了移動端套餐查看功能,對應(yīng)的服務(wù)端方法為SetmealController的list方法,此方法會根據(jù)前端提交的查詢條件進(jìn)行數(shù)據(jù)庫查詢操作。在高并發(fā)的情況下,頻繁查詢數(shù)據(jù)庫會導(dǎo)致系統(tǒng)性能下降,服務(wù)端響應(yīng)時間增長?,F(xiàn)在需要對此方法進(jìn)行緩存優(yōu)化,提高系統(tǒng)的性能。

具體的實現(xiàn)思路如下:

1、導(dǎo)入Spring Cache和Redis相關(guān)maven坐標(biāo)
2、在application.yml中配置緩存數(shù)據(jù)的過期時間
3、在啟動類上加入@EnableCaching注解,開啟緩存注解功能
4、在SetmealController的list方法上加入@Cacheable注解
5、在SetmealController的save和delete方法上加入CacheEvict注解
代碼改造
在pom.xml文件中導(dǎo)入maven坐標(biāo):

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

在application.yml中配置緩存數(shù)據(jù)過期時間:

cache:
    redis:
        time-to-live: 1800000 #設(shè)置緩存數(shù)據(jù)過期時間

在啟動類@EnableCaching注解

在list方法上添加注解,實現(xiàn)在redis里添加緩存:

@Cacheable(value = "setmealCache",key = "#setmeal.categoryId+'_'+#setmeal.status")

在update,add,delete方法上添加注解,清除緩存:

@CacheEvict(value = "setmealCache",allEntries = true)

注意:要讓R實現(xiàn)Serializable接口(序列化),注解才能生效文章來源地址http://www.zghlxwxcb.cn/news/detail-520527.html

到了這里,關(guān)于springboot項目外賣管理 day08-緩存優(yōu)化的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 瑞吉外賣項目----(2)緩存優(yōu)化

    瑞吉外賣項目----(2)緩存優(yōu)化

    將項目推送到遠(yuǎn)程倉庫里,教程在git 提交遠(yuǎn)程倉庫前建議取消代碼檢查 創(chuàng)建新的分支v1.0(用于實現(xiàn)緩存優(yōu)化)并推送到遠(yuǎn)程倉庫 1.1.1 maven坐標(biāo) 導(dǎo)入spring-data-redis的maven坐標(biāo): 1.1.2 配置文件 在application.yml中加入redis相關(guān)配置: 1.1.3 配置類 在項目中加入RedisConfig 1.2.1 實現(xiàn)思路

    2024年02月14日
    瀏覽(16)
  • 【java】【項目實戰(zhàn)】[外賣九]項目優(yōu)化(緩存)

    【java】【項目實戰(zhàn)】[外賣九]項目優(yōu)化(緩存)

    目錄 一、問題說明 二、環(huán)境搭建 2.1 Git管理代碼 2.1.1 創(chuàng)建本地倉庫 2.1.2 創(chuàng)建遠(yuǎn)程倉庫 2.1.3 創(chuàng)建分支--》推送到遠(yuǎn)程倉庫 2.2 maven坐標(biāo) 2.3 配置文件application.yml 2.4 配置類RedisConfig 三、緩存短信驗證碼 3.1 實現(xiàn)思路 3.2 代碼改造 3.2.1?UserController 3.3 功能測試 四、緩存菜品數(shù)據(jù) 4

    2024年02月09日
    瀏覽(21)
  • itheima蒼穹外賣項目學(xué)習(xí)筆記--Day7:緩存商品 / 購物車

    通過Redis來緩存菜品數(shù)據(jù),減少數(shù)據(jù)庫查詢操作。 緩存邏輯分析: 每個分類下的菜品保存一份緩存數(shù)據(jù) 數(shù)據(jù)庫中菜品數(shù)據(jù)有變更時清理緩存數(shù)據(jù) 修改用戶端接口 DishController 的 list 方法,加入緩存處理邏輯 修改管理端接口 DishController 的相關(guān)方法,加入清理緩存的邏輯,需要

    2024年02月16日
    瀏覽(23)
  • 【SpringBoot項目】SpringBoot項目-瑞吉外賣【day01】

    【SpringBoot項目】SpringBoot項目-瑞吉外賣【day01】

    ??博客x主頁:己不由心王道長??! ??文章說明:SpringBoot項目-瑞吉外賣【day01】?? ?系列專欄:SpringBoot項目 ??本篇內(nèi)容:對黑馬的瑞吉外賣項目的day01進(jìn)行筆記和項目實現(xiàn)?? ??每日一語:人有退路,就有些許安全感。等到哪一天,你真沒了退路,你就發(fā)現(xiàn)眼前哪條路都

    2023年04月08日
    瀏覽(24)
  • 基于Spring boot和Mybatis外賣項目瑞吉外賣Day9-Redis的快速入門

    基于Spring boot和Mybatis外賣項目瑞吉外賣Day9-Redis的快速入門

    4.1 Redis數(shù)據(jù)結(jié)構(gòu)介紹 Redis是一個key-value的數(shù)據(jù)庫,key一般是String類型,不過value的類型多種多樣: 貼心小建議:命令不要死記,學(xué)會查詢就好啦 Redis為了方便我們學(xué)習(xí),將操作不同數(shù)據(jù)類型的命令也做了分組,在官網(wǎng)( https://redis.io/commands )可以查看到不同的命令: 當(dāng)然我們

    2023年04月09日
    瀏覽(33)
  • 最適合新手的SpringBoot+SSM項目《蒼穹外賣》實戰(zhàn)—(五)員工管理

    最適合新手的SpringBoot+SSM項目《蒼穹外賣》實戰(zhàn)—(五)員工管理

    黑馬程序員最新Java項目實戰(zhàn)《蒼穹外賣》,最適合新手的SpringBoot+SSM的企業(yè)級Java項目實戰(zhàn)。 設(shè)計 DTO 類 我們需要根據(jù)新增員工接口設(shè)計對應(yīng)的 DTO 類去接收前端傳遞的參數(shù),前端傳遞參數(shù)列表如下: 注意: 當(dāng)前端提交的數(shù)據(jù)和實體類中對應(yīng)的屬性差別比較大時,建議使用

    2024年02月15日
    瀏覽(48)
  • 蒼穹外賣day07——緩存菜品套餐+購物車功能實現(xiàn)

    蒼穹外賣day07——緩存菜品套餐+購物車功能實現(xiàn)

    用戶訪問量過大帶來的一個直接效果就是響應(yīng)速度慢,使用體驗下降。 使用redis緩存菜品數(shù)據(jù),減少數(shù)據(jù)庫查詢操作。 ?頁面展示上基本就是同一個分類在同一頁,所以key-value結(jié)構(gòu)可以使用不同的分類來做key。 在小程序每一次點擊不同的分類,后端哪里都會刷刷刷的連接數(shù)據(jù)

    2024年02月14日
    瀏覽(34)
  • 蒼穹外賣day02項目日志

    蒼穹外賣day02項目日志

    參考產(chǎn)品原型,設(shè)計表和接口。 1.1.1設(shè)計表 看員工管理的產(chǎn)品原型: 有員工姓名、賬號、手機號、賬號狀態(tài)、最后操作時間等。 注意,操作一欄不是字段,其中的啟用禁用才是。 再看添加員工的原型: ?可以發(fā)現(xiàn)還有性別和身份證號。 不要忘了旁邊: 還有密碼。 總結(jié)出了

    2024年02月14日
    瀏覽(27)
  • 項目實戰(zhàn)————蒼穹外賣(DAY11)

    項目實戰(zhàn)————蒼穹外賣(DAY11)

    Apache ECharts 營業(yè)額統(tǒng)計 用戶統(tǒng)計 訂單統(tǒng)計 銷量排名Top10 功能實現(xiàn): 數(shù)據(jù)統(tǒng)計 數(shù)據(jù)統(tǒng)計效果圖: 1.1 介紹 Apache ECharts 是一款基于 Javascript 的數(shù)據(jù)可視化圖表庫,提供直觀,生動,可交互,可個性化定制的數(shù)據(jù)可視化圖表。 官網(wǎng)地址:Apache ECharts 常見效果展示: 1). 柱形圖

    2024年01月20日
    瀏覽(25)
  • 蒼穹外賣-day14:前端環(huán)境搭建、員工管理

    蒼穹外賣-day14:前端環(huán)境搭建、員工管理

    前端環(huán)境搭建 員工分頁查詢 啟用禁用員工賬號 新增員工 修改員工 1.1 技術(shù)選型 本項目使用到的前端技術(shù)如下: node.js vue ElementUI axios vuex vue-router typescript 1.2 熟悉前端代碼結(jié)構(gòu) 直接導(dǎo)入課程資料中提供的蒼穹外賣項目前端初始工程,此工程中已經(jīng)開發(fā)了部分功能,后續(xù)我們

    2024年04月28日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包