欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot 開(kāi)啟Redis緩存及使用方法

 更新時(shí)間:2021年08月17日 08:45:08   作者:Dean_xiu  
用redis做緩存,是因?yàn)閞edis有著很優(yōu)秀的讀寫(xiě)能力,在集群下可以保證數(shù)據(jù)的高可用,那么今天通過(guò)本文給大家講解下SpringBoot使用Redis的緩存的方法,感興趣的朋友一起看看吧

之前不是說(shuō)過(guò)Redis可以當(dāng)作緩存用嘛
現(xiàn)在我們就配置一下SpringBoot使用Redis的緩存

Redis緩存

為什么用Redis作緩存
用redis做緩存,是因?yàn)閞edis有著很優(yōu)秀的讀寫(xiě)能力,在集群下可以保證數(shù)據(jù)的高可用

主要步驟

 1、pom.xml文件添加依賴(lài)

2、yml文件配置redis集群

3、編寫(xiě)RedisConfig配置序列化及緩存配置,添加緩存注解

4、編寫(xiě)業(yè)務(wù)Controller,添加緩存注解

5、編寫(xiě)啟動(dòng)類(lèi)

具體實(shí)踐

整體目錄結(jié)構(gòu)

pom.xml添加依賴(lài)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>SpringBoot_Redis</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <java.version>1.8</java.version>
    </properties>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.8.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--整合redis-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <!--spring boot test-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
    </dependencies>

</project>

在這里插入圖片描述

yml文件里配置Redis集群

結(jié)構(gòu)是ip+port

spring:
  redis:
    cluster:
      nodes:
        - 169.254.0.100:8001
        - 169.254.0.100:8002
        - 169.254.0.100:8003
        - 169.254.0.100:8004
        - 169.254.0.100:8005
        - 169.254.0.100:8006

在這里插入圖片描述

編寫(xiě)RedisConfig配置序列化及緩存配置,添加緩存注解

在這里插入圖片描述

設(shè)置序列化的Bean

在這里插入圖片描述

設(shè)置緩存的Bean

在這里插入圖片描述

這里有必要解釋一下

  • cacheNames.add() 這里我理解的是和controller進(jìn)行綁定,畢竟很多controller的時(shí)候,這里可以確定到底那個(gè)controller開(kāi)啟緩存,以及每個(gè)controller對(duì)緩存的要求可能也不一樣
  • configMap這里就是將我們對(duì)緩存的一些配置和命名空間進(jìn)行關(guān)聯(lián)
  • 設(shè)置緩存時(shí)間和禁止緩存空數(shù)據(jù)應(yīng)該還好理解

編寫(xiě)業(yè)務(wù)Controller

@RestController
@RequestMapping("user")
public class RedisCacheController {
    @Cacheable(value = "user",key = "#root.methodName+#root.args[0]")
    @GetMapping("findWord/{id}")
    public String findWord(@PathVariable String id) {
        System.out.println("Cacheing");
        HashMap<String, String> words = new HashMap<>();
        words.put("1", "java");
        words.put("2", "redis");
        words.put("3", "cache");
        return words.get(id);
    }
}

@Cacheable一定要加在方法之上
value就是之前在RedisConfig中定義的命名空間,也是緩存保存的空間
key就是緩存保存的key,這里以方法名為key,但是為避免方法名重復(fù)導(dǎo)致的key重復(fù),所以加入id,來(lái)避免重復(fù)

關(guān)于緩存的其他注解

  • @CachePut

在支持Spring Cache的環(huán)境中,對(duì)于使用@Cacheale標(biāo)注的方法,Spring在每次執(zhí)行前都會(huì)檢查Cache中是否存在相同的key的緩存元素,如果存在就不再執(zhí)行該方法,而是從緩存中獲取結(jié)果直接進(jìn)行返回,若不存在才會(huì)執(zhí)行方法并將返回結(jié)果存入指定的緩存中

@Cacheput也可以生命一個(gè)方法支持緩存功能,與@Cacheable不同的是使用@CachePut標(biāo)注的方法在執(zhí)行并不會(huì)去檢查緩存中是否存在之前執(zhí)行過(guò)的結(jié)果,而是每次都會(huì)執(zhí)行該方法,并將執(zhí)行結(jié)果以鍵值對(duì)的形式存入緩存中。

  • @CacheEvict

CacheEvict是用來(lái)標(biāo)注在需要清除緩存元素的方法或類(lèi)上的。
當(dāng)標(biāo)記在一個(gè)類(lèi)上時(shí)表示其中所有的方法的執(zhí)行都會(huì)觸發(fā)緩存的清除操作
@CacheEvict可以指定的屬性有value、key、condition、allEntries和beforeInvocation。
其中value、key和condition的語(yǔ)義與@Cacheable對(duì)應(yīng)的屬性類(lèi)似。即value表示清除操作是發(fā)生在哪些緩存(命名空間)上的
key表示要清除的是哪個(gè)key,如未指定則會(huì)誰(shuí)用默認(rèn)策略生成的key,condition表示清除操作發(fā)生的條件
allEntries屬性
allEntries是boolean類(lèi)型的,表示是否要清除緩存中的所有元素,默認(rèn)為false,當(dāng)指定為true時(shí),會(huì)忽略指定的key
beforeInvocation屬性
清除操作默認(rèn)時(shí)在對(duì)應(yīng)方法成功執(zhí)行后觸發(fā)的,即方法如果因?yàn)閽伋霎惓6茨艹晒Ψ祷匾膊粫?huì)觸發(fā)清除操作
使用beforeInvocation可以改變觸發(fā)清除操作的時(shí)間,當(dāng)我們指定屬性值為true時(shí),Spring會(huì)在調(diào)用該方法之前清除緩存中的指定元素 編寫(xiě)啟動(dòng)類(lèi)

就是傳統(tǒng)的啟動(dòng)類(lèi)

在這里插入圖片描述

檢驗(yàn)結(jié)果

使用postman發(fā)送請(qǐng)求進(jìn)行檢測(cè)
第一次的時(shí)候可以看到控制臺(tái)打印

在這里插入圖片描述

這說(shuō)明方法執(zhí)行了
但是第二次發(fā)送相同請(qǐng)求的時(shí)候,可以看到拿到了數(shù)據(jù),但是方法沒(méi)有執(zhí)行,說(shuō)明緩存有用了

在這里插入圖片描述
在這里插入圖片描述

好了,到此結(jié)束。

到此這篇關(guān)于SpringBoot 開(kāi)啟Redis緩存的文章就介紹到這了,更多相關(guān)SpringBoot Redis緩存內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • springboot使用Redis作緩存使用入門(mén)教程

    springboot使用Redis作緩存使用入門(mén)教程

    這篇文章主要介紹了springboot使用Redis作緩存使用入門(mén)教程,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-07-07
  • Redis主從架構(gòu)和高可用性實(shí)現(xiàn)過(guò)程

    Redis主從架構(gòu)和高可用性實(shí)現(xiàn)過(guò)程

    本文詳細(xì)介紹了使用Redis主從架構(gòu)和Linux虛擬服務(wù)器(LVS)實(shí)現(xiàn)高可用性的方法,并回顧了最近完成的Redis集群遷移部署過(guò)程,主從架構(gòu)通過(guò)復(fù)制數(shù)據(jù)來(lái)提高性能和數(shù)據(jù)冗余,而LVS用于實(shí)現(xiàn)負(fù)載均衡和故障切換,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • Redis 布隆過(guò)濾器的原理和實(shí)踐教程

    Redis 布隆過(guò)濾器的原理和實(shí)踐教程

    布隆過(guò)濾器適用于需要快速判斷一個(gè)元素是否可能存在于集合中的場(chǎng)景,例如網(wǎng)絡(luò)爬蟲(chóng)中的去重、緩存中的數(shù)據(jù)判斷等,這篇文章主要介紹了Redis 布隆過(guò)濾器的原理和實(shí)踐,需要的朋友可以參考下
    2024-02-02
  • Satoken+Redis實(shí)現(xiàn)短信登錄、注冊(cè)、鑒權(quán)功能

    Satoken+Redis實(shí)現(xiàn)短信登錄、注冊(cè)、鑒權(quán)功能

    這篇文章主要介紹了Satoken+Redis實(shí)現(xiàn)短信登錄、注冊(cè)、鑒權(quán)功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-01-01
  • 面試分析分布式架構(gòu)Redis熱點(diǎn)key大Value解決方案

    面試分析分布式架構(gòu)Redis熱點(diǎn)key大Value解決方案

    這篇文章主要為大家介紹了分布式架構(gòu)Redis熱點(diǎn)key大Value解決方案,以及在面試中如果遇到這類(lèi)問(wèn)題的分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-03-03
  • 一文詳解Redis中的持久化

    一文詳解Redis中的持久化

    這篇文章主要介紹了一文詳解Redis中的持久化,持久化功能有效地避免因進(jìn)程退出造成的數(shù)據(jù)丟失問(wèn)題,當(dāng)下次重啟時(shí)利用之前持久化的文件即可實(shí)現(xiàn)數(shù)據(jù)恢復(fù)
    2022-09-09
  • Redis如何正確關(guān)閉和開(kāi)啟持久化

    Redis如何正確關(guān)閉和開(kāi)啟持久化

    本文主要介紹了Redis如何正確關(guān)閉和開(kāi)啟持久化,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • 淺析對(duì)redis?hashtable?的sizemask理解

    淺析對(duì)redis?hashtable?的sizemask理解

    在?Redis?的哈希表實(shí)現(xiàn)中,index?=?hash?&?dict->ht[0].sizemask?是計(jì)算鍵值對(duì)應(yīng)存儲(chǔ)位置的核心操作,本文給大家介紹redis?hashtable?的sizemask理解,感興趣的朋友一起看看吧
    2025-03-03
  • Redis實(shí)現(xiàn)分布式隊(duì)列淺析

    Redis實(shí)現(xiàn)分布式隊(duì)列淺析

    Redis將數(shù)據(jù)存儲(chǔ)在內(nèi)存中,使得讀寫(xiě)速度非??欤?jīng)常被用來(lái)做緩存系統(tǒng),這里我們將redis用來(lái)做一個(gè)分布式的消息隊(duì)列。這篇文章主要介紹了使用redis來(lái)作為消息隊(duì)列,并且進(jìn)行分布式主從配置,有需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2016-11-11
  • 5分鐘教你docker安裝啟動(dòng)redis全教程(全新方式)

    5分鐘教你docker安裝啟動(dòng)redis全教程(全新方式)

    今天,我來(lái)帶大家使用一種全新的方式docker來(lái)安裝redis,首先我們來(lái)了解一下什么是redis以及我們?yōu)槭裁匆褂胷edis,以及它的優(yōu)缺點(diǎn),感興趣的朋友跟隨小編一起學(xué)習(xí)下吧
    2021-05-05

最新評(píng)論