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

@EnableCaching @Cacheable @CachePut redis注解緩存

這篇具有很好參考價(jià)值的文章主要介紹了@EnableCaching @Cacheable @CachePut redis注解緩存。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

@EnableCaching注解是spring framework中的注解驅(qū)動(dòng)的緩存管理功能。自spring版本3.1起加入了該注解。如果你使用了這個(gè)注解,那么你就不需要在XML文件中配置cache manager了。

當(dāng)你在配置類(@Configuration)上使用@EnableCaching注解時(shí),會(huì)觸發(fā)一個(gè)post processor,這會(huì)掃描每一個(gè)spring bean,查看是否已經(jīng)存在注解對(duì)應(yīng)的緩存。如果找到了,就會(huì)自動(dòng)創(chuàng)建一個(gè)代理攔截方法調(diào)用,使用緩存的bean執(zhí)行處理。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-547875.html

@EnableCaching
@Configuration
public class RedisConfig {

    /**
     * @Cacheable注解不支持配置過(guò)期時(shí)間,所有需要通過(guò)配置CacheManneg來(lái)配置默認(rèn)的過(guò)期時(shí)間和針對(duì)每個(gè)類或者是方法進(jìn)行緩存失效時(shí)間配置。
     * @param redisConnectionFactory
     * @return
     */
    @Bean
    public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
        return new RedisCacheManager(
                RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory),
                this.getRedisCacheConfigurationWithTtl(600), // 默認(rèn)策略,未配置的 key 會(huì)使用這個(gè)
                this.getRedisCacheConfigurationMap() // 指定 key 策略
        );
    }

    private Map<String, RedisCacheConfiguration> getRedisCacheConfigurationMap() {
        Map<String, RedisCacheConfiguration> redisCacheConfigurationMap = new HashMap<>();
        redisCacheConfigurationMap.put("wxcl", this.getRedisCacheConfigurationWithTtl(60*60*24*7));
        //redisCacheConfigurationMap.put("UserInfoListAnother", this.getRedisCacheConfigurationWithTtl(18000));
        return redisCacheConfigurationMap;
    }

    private RedisCacheConfiguration getRedisCacheConfigurationWithTtl(Integer seconds) {
        StringRedisSerializer keyStringRedisSerializer = new StringRedisSerializer();
        Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(om);

        RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig();
        redisCacheConfiguration = redisCacheConfiguration.serializeValuesWith(
                RedisSerializationContext
                        .SerializationPair
                        .fromSerializer(jackson2JsonRedisSerializer)
        ).entryTtl(Duration.ofSeconds(seconds));
        redisCacheConfiguration.serializeKeysWith(
                RedisSerializationContext
                        .SerializationPair
                        .fromSerializer(keyStringRedisSerializer)
        );

        return redisCacheConfiguration;
    }

}
@Slf4j
@Service("myUserCacheService")
public class MyUserCacheService {

    /**
     * sso登錄用戶獲取當(dāng)前用戶
     * @param token token
     * @param user  獲取默認(rèn)null
     */
    @Cacheable(
            value = "iotgw",
            key = "'user'+#token",
            unless = "#result eq null")
    public Map<String, String> getUserFromRedis(String token, Map<String, String> user) {
        log.info("從緩存中獲取sso登錄人信息失敗 {},準(zhǔn)備寫(xiě)入緩存", user);
        return user;
    }

    /**
     * 獲取企業(yè)信息
     * @param token   存儲(chǔ)關(guān)鍵值
     * @param company 企業(yè)信息
     */
    @Cacheable(
            value = "devicecenter",
            key = "'company'+#token",
            unless = "#result eq null")
    public Map<String, String> getCompanyFromRedis(String token, Map<String, String> company) {
        log.info("從緩存中獲取登錄人信息失敗 {},準(zhǔn)備寫(xiě)入緩存", company);
        return company;
    }

    /**
     * 企業(yè)信息緩存變更
     * @param token   存儲(chǔ)關(guān)鍵值
     * @param company 企業(yè)信息
     */
    @CachePut(
            value = "devicecenter",
            key = "'company'+#token",
            unless = "#result eq null")
    public Map<String, String> setCompanyFromRedis(String token, Map<String, String> company) {
        log.info("從緩存中獲取登錄人信息失敗 {},準(zhǔn)備寫(xiě)入緩存", company);
        return company;
    }

    /**
     * 后臺(tái)登錄用戶獲取當(dāng)前用戶
     */
    @Cacheable(
            value = "iotmgw",
            key = "'user'+#userId",
            unless = "#result eq null")
    public Map<String, String> getManagerUserFromRedis(String userId, Map<String, String> user) {
        log.info("從緩存中獲取后臺(tái)登錄人信息失敗 {},準(zhǔn)備寫(xiě)入緩存", user);
        return user;
    }

}

到了這里,關(guān)于@EnableCaching @Cacheable @CachePut redis注解緩存的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

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

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

    1、緩存使用步驟:@Cacheable這個(gè)注解,用它就是為了使用緩存的。所以我們可以先說(shuō)一下緩存的使用步驟: 1、開(kāi)啟基于注解的緩存,使用 @EnableCaching 標(biāo)識(shí)在 SpringBoot 的主啟動(dòng)類上。 2、標(biāo)注緩存注解即可 ?使用? @Cacheable ?注解就可以將運(yùn)行結(jié)果緩存,以后查詢相同的數(shù)據(jù),

    2024年02月07日
    瀏覽(20)
  • SpringBoot的Cacheable緩存注解

    當(dāng)我們的應(yīng)用程序需要頻繁地讀取和寫(xiě)入數(shù)據(jù)時(shí),為了提高應(yīng)用程序的性能,我們通常會(huì)使用緩存技術(shù)。Spring Boot 提供了一種簡(jiǎn)單而強(qiáng)大的緩存框架,它可以輕松地將數(shù)據(jù)緩存到 Redis 中。 在 Spring Boot 中可以在方法上簡(jiǎn)單的加上注解實(shí)現(xiàn)緩存。 首先,您需要在您的項(xiàng)目中添加

    2024年02月10日
    瀏覽(22)
  • SpringBoot通過(guò)@Cacheable注解實(shí)現(xiàn)緩存功能

    SpringBoot通過(guò)@Cacheable注解實(shí)現(xiàn)緩存功能

    Spring 從 3.1 開(kāi)始就引入了對(duì) Cache 的支持。定義了 org.springframework.cache.Cache 和 org.springframework.cache.CacheManager 接口來(lái)統(tǒng)一不同的緩存技術(shù)。并支持使用 JCache(JSR-107) 注解簡(jiǎn)化我們的開(kāi)發(fā)。 其使用方法和原理都類似于 Spring 對(duì)事務(wù)管理的支持,Spring Cache 是作用在方法上的,其核

    2024年02月10日
    瀏覽(25)
  • Spring 中的 @Cacheable 緩存注解,太好用了!

    Spring 中的 @Cacheable 緩存注解,太好用了!

    第一個(gè)問(wèn)題,首先要搞明白什么是緩存,緩存的意義是什么。 對(duì)于普通業(yè)務(wù),如果要查詢一個(gè)數(shù)據(jù),一般直接select數(shù)據(jù)庫(kù)進(jìn)行查找。但是在高流量的情況下,直接查找數(shù)據(jù)庫(kù)就會(huì)成為性能的瓶頸。因?yàn)閿?shù)據(jù)庫(kù)查找的流程是先要從磁盤(pán)拿到數(shù)據(jù),再刷新到內(nèi)存,再返回?cái)?shù)據(jù)。磁

    2024年02月16日
    瀏覽(13)
  • SpringBoot緩存注解@Cacheable之自定義key策略及緩存失效時(shí)間指定

    SpringBoot緩存注解@Cacheable之自定義key策略及緩存失效時(shí)間指定

    1. 項(xiàng)目依賴 本項(xiàng)目借助 SpringBoot 2.2.1.RELEASE ?+? maven 3.5.3 ?+? IDEA ?+? redis5.0 進(jìn)行開(kāi)發(fā) 開(kāi)一個(gè) web 服務(wù)用于測(cè)試 1. key 生成策略 對(duì)于 @Cacheable 注解,有兩個(gè)參數(shù)用于組裝緩存的 key cacheNames/value: 類似于緩存前綴 key: SpEL 表達(dá)式,通常根據(jù)傳參來(lái)生成最終的緩存 key 默認(rèn)的 redisK

    2024年02月19日
    瀏覽(15)
  • redis(12):springboot使用redis注解做緩存

    redis(12):springboot使用redis注解做緩存

    1 新建springboot項(xiàng)目 ? 2 相關(guān)注解 @EnableCaching 在啟動(dòng)類上加上注解啟動(dòng)緩存 #作用在你要緩存的數(shù)據(jù)上 @Cacheable(key=\\\"#id\\\",cacheNames=\\\"com.sxt.service.impl.MenuServiceImpl\\\") @Cacheput 解決臟讀 @CachEvict(解決臟讀) @Cacheconfig(全局的配置緩存) 3 修改yml

    2024年02月15日
    瀏覽(27)
  • Spring Boot 中的 @Cacheable 注解

    Spring Boot 中的 @Cacheable 注解

    在 Spring Boot 中,緩存是一個(gè)非常重要的話題。當(dāng)我們需要頻繁讀取一些數(shù)據(jù)時(shí),為了提高性能,可以將這些數(shù)據(jù)緩存起來(lái),避免每次都從數(shù)據(jù)庫(kù)中讀取。為了實(shí)現(xiàn)緩存,Spring Boot 提供了一些緩存注解,其中最常用的是 @Cacheable 注解。 @Cacheable 注解用于標(biāo)記一個(gè)方法需要被緩存

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

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

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

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

    SpringBoot 緩存之 @Cacheable 詳細(xì)介紹

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

    2024年04月27日
    瀏覽(27)
  • 轉(zhuǎn)載 spring @Cacheable擴(kuò)展實(shí)現(xiàn)緩存自動(dòng)過(guò)期時(shí)間以及自動(dòng)刷新

    轉(zhuǎn)載 spring @Cacheable擴(kuò)展實(shí)現(xiàn)緩存自動(dòng)過(guò)期時(shí)間以及自動(dòng)刷新

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

    2024年02月03日
    瀏覽(13)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包