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

SpringBoot的Cacheable緩存注解

這篇具有很好參考價值的文章主要介紹了SpringBoot的Cacheable緩存注解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

當我們的應用程序需要頻繁地讀取和寫入數據時,為了提高應用程序的性能,我們通常會使用緩存技術。Spring Boot 提供了一種簡單而強大的緩存框架,它可以輕松地將數據緩存到 Redis 中。

在 Spring Boot 中可以在方法上簡單的加上注解實現緩存。

Redis 緩存配置

首先,您需要在您的項目中添加 Redis 的依賴。您可以將以下依賴添加到您的項目的 pom.xml 文件中:

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

一旦 Redis 的依賴被添加,您需要配置 Redis 的相關信息。以下是一個示例 Redis 配置:

spring:
  redis:
    host: 127.0.0.1
    port: 6379
    password: 
    database: 0

在上述配置文件中,host 和 port 屬性指定了 Redis 服務器的主機名和端口號,password 屬性用于指定 Redis 服務器的密碼(如果有的話),而 database 屬性則指定了 Redis 服務器使用的數據庫編號。

Redis 的默認序列化器是 JdkSerializationRedisSerializer,但是在實際使用中,由于其序列化后的大小通常比較大,因此我們通常使用 StringRedisSerializer 或者 Jackson2JsonRedisSerializer 將緩存值序列化為字符串或者 JSON 格式。以下是一個自定義序列化器的示例:

@Configuration
public class RedisConfig {
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
        RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
        template.setConnectionFactory(connectionFactory);
        template.setKeySerializer(new StringRedisSerializer());
        template.setValueSerializer(new Jackson2JsonRedisSerializer<>(Object.class));
        return template;
    }
}

在此示例中,我們通過自定義 Bean 配置了 RedisTemplate,使用 StringRedisSerializer 序列化 Redis 鍵,并使用 Jackson2JsonRedisSerializer 序列化 Redis 值為 JSON 格式。

Cacheable 注解

使用 Cacheable 注解來標記需要進行緩存的方法。以下是一個具有 Cacheable 注解的示例方法:

@Service
public class UserService {
    @Cacheable(value = "users", key = "#id")
    public User getUserById(Long id) {
        // 查詢用戶并返回
    }
}

在這個例子中,@Cacheable 注解用于標記 getUserById 方法,而 value 屬性則用于指定緩存的存儲區(qū)域的名稱。由于我們正在使用 Redis 作為緩存,因此 Redis 中的 key 將由 Cacheable 注解中的 key 屬性指定。在此示例中,key 屬性設置為 “#id”,這意味著我們將使用方法參數 id 作為 Redis 緩存的鍵。

多參數 Cacheable 注解

在某些情況下,我們需要以多個參數作為 key 來緩存數據。此時,我們可以對 key 屬性使用表達式 language(SpEL)來設置多個參數:

@Service
public class UserService {
    @Cacheable(value = "users", key = "#id + '_' + #name")
    public User getUserByIdAndName(Long id, String name) {
        // 查詢用戶并返回
    }
}

在上述示例中,我們使用了表達式語言(SpEL)將 id 和 name 兩個參數組合成了一個 Redis 緩存鍵。

緩存的有效期

緩存的有效期實際上是一個非常重要的問題,對于緩存的性能和可靠性都有很大的影響??梢允褂?@Cacheable 注解上的 expire 屬性來設置緩存的過期時間。以下是一個設置緩存時效的示例:

@Service
public class UserService {
    @Cacheable(value = "users", key = "#id", expire = 600)
    public User getUserById(Long id) {
        // 查詢用戶并返回
    }
}

在此示例中,我們添加了一個名為 expire 的屬性,該屬性用于指定緩存的過期時間(以秒為單位)。在此示例中,我們設置了緩存過期時間為 600 秒,也就是 10 分鐘。

緩存的清除 @CacheEvict

有時候,您需要清除 Redis 緩存中的某些數據,以便在下一次訪問時重建緩存。在 Spring Boot 中,可以使用 @CacheEvict 注解來清除 Redis 緩存中的數據。以下是一個使用 @CacheEvict 注解的示例:

@Service
public class UserService {
    @Cacheable(value = "users", key = "#id")
    public User getUserById(Long id) {
        // 查詢用戶并返回
    }

    @CacheEvict(value = "users", key = "#id")
    public void deleteUserById(Long id) {
        // 刪除用戶并返回
    }

    @CacheEvict(value = "users", allEntries = true)
    public void deleteAllUsers() {
        // 刪除所有用戶并返回
    }
}

在此示例中,我們添加了刪除單個用戶和刪除所有用戶的兩個方法,使用 @CacheEvict 注解來刪除 Redis 緩存中的相應數據。請注意,我們設置了 allEntries 屬性為 true,以刪除所有緩存中的數據。

緩存的條件

有時候,您需要在某些特定條件下才進行緩存操作。例如,只有當用戶年齡大于 18 歲時才進行緩存。在 Spring Boot 中,可以使用 @Cacheable、@CachePut 和 @CacheEvict 注解上的 condition 屬性來設置緩存條件。以下是一個使用 condition 屬性的示例:

@Service
public class UserService {
    @Cacheable(value = "users", key = "#id", condition = "#age > 18")
    public User getUserById(Long id, int age) {
        // 查詢用戶并返回
    }
}

在此示例中,我們添加了一個名為 condition 的屬性,該屬性用于指定緩存的條件。在此示例中,我們將 condition 屬性設置為 “#age > 18”,這意味著只有當 age 大于 18 時,才進行緩存操作。

緩存管理

在實際使用中,應用程序緩存數據的管理也是非常重要的。Spring Boot 提供了一個名為 CacheManager 的接口,您可以使用它來創(chuàng)建并管理緩存對象。以下是一個使用 CacheManager 的示例:

@Configuration
@EnableCaching
public class CacheConfig extends CachingConfigurerSupport {
    @Bean
    @Override
    public CacheManager cacheManager() {
        RedisCacheManager cacheManager = RedisCacheManager.builder(redisConnectionFactory())
                .cacheDefaults(RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofMinutes(10)))
                .build();
        return cacheManager;
    }

    @Bean
    public RedisConnectionFactory redisConnectionFactory() {
        return new LettuceConnectionFactory("localhost", 6379);
    }
}

在此示例中,我們創(chuàng)建了一個名為 CacheConfig 的配置類,并使用 @EnableCaching 注解來開啟緩存支持。然后,我們通過實現 CachingConfigurerSupport 接口,覆蓋 cacheManager 方法,創(chuàng)建了一個 RedisCacheManager 對象,并將其返回。在此 RedisCacheManager 中,我們使用默認的 RedisCacheConfiguration 進行了一些配置,例如設置緩存的過期時間,同時指定了 Redis 的連接信息。

結語

在本文中,我們介紹了如何在 Spring Boot 應用程序中使用 Redis 進行緩存。我們介紹了如何通過自定義 RedisTemplate Bean 來配置自己的 Redis 序列化器,在 Cacheable 注解中指定緩存區(qū)域和緩存鍵,以及如何使用 @CacheEvict 方法來清除 Redis 緩存中的數據。同時,我們還展示了更高級的功能,例如使用 CacheManager 對象管理緩存。文章來源地址http://www.zghlxwxcb.cn/news/detail-684026.html

到了這里,關于SpringBoot的Cacheable緩存注解的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

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

領支付寶紅包贊助服務器費用

相關文章

  • @Cacheable 注解(指定緩存位置)

    @Cacheable 注解(指定緩存位置)

    1、緩存使用步驟:@Cacheable這個注解,用它就是為了使用緩存的。所以我們可以先說一下緩存的使用步驟: 1、開啟基于注解的緩存,使用 @EnableCaching 標識在 SpringBoot 的主啟動類上。 2、標注緩存注解即可 ?使用? @Cacheable ?注解就可以將運行結果緩存,以后查詢相同的數據,

    2024年02月07日
    瀏覽(20)
  • redis緩存神器:@Cacheable注解

    在之前的文章中,我們寫了redis結合springboot做緩存分頁的方法: 在 Spring Boot 中結合 Redis 進行緩存分頁數據,可以通過以下步驟實現: 在 pom.xml 文件中添加 Redis 相關依賴: 在 application.properties 文件中配置 Redis 連接信息: 創(chuàng)建一個 RedisTemplate 對象,用于操作 Redis 緩存: 在

    2024年02月06日
    瀏覽(23)
  • @EnableCaching @Cacheable @CachePut redis注解緩存

    @EnableCaching注解是spring framework中的注解驅動的緩存管理功能。自spring版本3.1起加入了該注解。如果你使用了這個注解,那么你就不需要在XML文件中配置cache manager了。 當你在配置類(@Configuration)上使用@EnableCaching注解時,會觸發(fā)一個post processor,這會掃描每一個spring bean,查看是

    2024年02月13日
    瀏覽(17)
  • 一文掌握SpringBoot注解之@Cacheable 知識文集(1)

    一文掌握SpringBoot注解之@Cacheable 知識文集(1)

    ??作者簡介,普修羅雙戰(zhàn)士,一直追求不斷學習和成長,在技術的道路上持續(xù)探索和實踐。 ??多年互聯網行業(yè)從業(yè)經驗,歷任核心研發(fā)工程師,項目技術負責人。 ??歡迎 ??點贊?評論?收藏 ?? SpringBoot 領域知識 ?? 鏈接 專欄 SpringBoot 專業(yè)知識學習一 SpringBoot專欄 Sprin

    2024年01月20日
    瀏覽(43)
  • SpringBoot 緩存之 @Cacheable 詳細介紹

    SpringBoot 緩存之 @Cacheable 詳細介紹

    1、緩存介紹 Spring 從 3.1 開始就引入了對 Cache 的支持。定義了 org.springframework.cache.Cache 和 org.springframework.cache.CacheManager 接口來統(tǒng)一不同的緩存技術。并支持使用 JCache(JSR-107)注解簡化我們的開發(fā)。? 其使用方法和原理都類似于 Spring 對事務管理的支持。Spring Cache 是作用在方

    2024年04月27日
    瀏覽(27)
  • 【springboot】緩存之@Cacheable、@CachePut、@CacheEvict的用法

    【springboot】緩存之@Cacheable、@CachePut、@CacheEvict的用法

    一、注解參數說明 1.1 屬性說明 1.1.1 value/cacheNames 屬性 1.這兩個屬性代表的意義相同 2.用來指定緩存組件的名稱,將方法的返回結果存進緩存的名稱 3.定義為數組時,可以存到多個緩存key中 1.1.2 key屬性 1.指定緩存數據的key 2.redis作為緩存時,redis中的key為value::key 3.方法沒有參

    2024年02月06日
    瀏覽(19)
  • 【SpringBoot】| Spring Boot 常見的底層注解剖析

    【SpringBoot】| Spring Boot 常見的底層注解剖析

    目錄 一:Spring Boot 常見的底層注解 1.?容器功能 1.1?組件添加 方法一:使用@Configuration注解+@Bean注解 方法二:使用@Configuration注解+@Import注解? 方法三:使用@Configuration注解+@Conditional注解? 1.2?原生xml配置文件引入 @ImportResource注解 1.3?配置綁定 方法一:@Component注解 + @Configu

    2024年02月17日
    瀏覽(28)
  • 轉載 spring @Cacheable擴展實現緩存自動過期時間以及自動刷新

    轉載 spring @Cacheable擴展實現緩存自動過期時間以及自動刷新

    用過spring cache的朋友應該會知道,Spring Cache默認是不支持在@Cacheable上添加過期時間的,雖然可以通過配置緩存容器時統(tǒng)一指定。形如 復制 但有時候我們會更習慣通過注解指定過期時間。今天我們就來聊一下如何擴展@Cacheable實現緩存自動過期以及緩存即將到期自動刷新 2 實現

    2024年02月03日
    瀏覽(13)
  • 【Redis系列】Spring Boot 集成 Redis 實現緩存功能

    【Redis系列】Spring Boot 集成 Redis 實現緩存功能

    ??????歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內容和知識,也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續(xù)學習,不斷總結,共同進步,活到老學到老 導航 檀越劍指大廠系列:全面總

    2024年04月10日
    瀏覽(96)
  • Java、Java EE、Spring和Spring Boot核心注解

    文章遷移至個人博客 此頁面包含常用 Java 、 Java EE 、 Spring 、 Spring Boot 、 JPA 常用注解的一站式說明。 @Component注解 @Component 注解表明被注解的類是一個“spring bean/組件”。@Component注解告訴Spring容器自動創(chuàng)建Spring bean。 @Autowired注解 @Autowired 注解用于自動注入 bean。@Autowired 注

    2024年02月15日
    瀏覽(25)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包