国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

springboot注解方式使用redis緩存

Muninn / 3520人閱讀

摘要:引入依賴庫在中引入依賴庫,如下注解使用自定義應(yīng)用到寫數(shù)據(jù)的方法上,如新增修改方法即應(yīng)用到移除數(shù)據(jù)的方法上,如刪除方法提供的上下文數(shù)據(jù)提供了一些供我們使用的上下文數(shù)據(jù),下表直接摘自官方文檔名字位置描述示例對象當(dāng)前被調(diào)用的方法

引入依賴庫

在pom中引入依賴庫,如下


    org.springframework.boot
    spring-boot-starter-data-redis


    redis.clients
    jedis
注解使用
@Cacheable

@Cacheable("product")
@Cacheable(value = {"product","order"}, key = "#root.targetClass+"-"+#id")
@Cacheable(value = "product", key = "#root.targetClass+"-"+#id")
自定義cacheManager
@Cacheable(value = "product", key = "#root.targetClass+"-"+#id” cacheManager="cacheManager")
@CachePut
應(yīng)用到寫數(shù)據(jù)的方法上,如新增/修改方法
@CachePut(value = "product", key = "#root.targetClass+"-"+#product.id")
@CacheEvict 
即應(yīng)用到移除數(shù)據(jù)的方法上,如刪除方法
@CacheEvict(value = "product", key = "#root.targetClass+"-"+#id")
提供的SpEL上下文數(shù)據(jù)

Spring Cache提供了一些供我們使用的SpEL上下文數(shù)據(jù),下表直接摘自Spring官方文檔:

名字 位置 描述 示例
methodName root對象 當(dāng)前被調(diào)用的方法名 #root.methodName
method root對象 當(dāng)前被調(diào)用的方法 #root.method.name
target root對象 當(dāng)前被調(diào)用的目標(biāo)對象 #root.target
targetClass root對象 當(dāng)前被調(diào)用的目標(biāo)對象類 #root.targetClass
args root對象 當(dāng)前被調(diào)用的方法的參數(shù)列表 #root.args[0]
caches root對象 當(dāng)前方法調(diào)用使用的緩存列表(如@Cacheable(value={"cache1", "cache2"})),則有兩個cache #root.caches[0].name
argument name 執(zhí)行上下文 當(dāng)前被調(diào)用的方法的參數(shù),如findById(Long id),我們可以通過#id拿到參數(shù) #user.id
result 執(zhí)行上下文 方法執(zhí)行后的返回值(僅當(dāng)方法執(zhí)行之后的判斷有效,如‘unless’,"cache evict"的beforeInvocation=false) #result
自定義Cache配置
@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport {
    /**
    * 自定義redis key值生成策略
    */
    @Bean
    @Override
    public KeyGenerator keyGenerator() {
        return (target, method, params) -> {
            StringBuilder sb = new StringBuilder();
            sb.append(target.getClass().getName());
            sb.append(method.getName());
            for (Object obj : params) {
                sb.append(obj.toString());
            }
            return sb.toString();
        };
    }
    
    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory factory) {
      ObjectMapper om = new ObjectMapper();
      om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
      om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
      //redis序列化
      Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
      jackson2JsonRedisSerializer.setObjectMapper(om);

      StringRedisTemplate template = new StringRedisTemplate(factory);
      template.setValueSerializer(jackson2JsonRedisSerializer);
      template.afterPropertiesSet();
      return template;
    }

    /**
    * 自定義CacheManager
    */
    @Bean
     public CacheManager cacheManager(RedisTemplate redisTemplate) {
         //全局redis緩存過期時間
         RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofDays(1));  
         RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(redisTemplate.getConnectionFactory());
        return new RedisCacheManager(redisCacheWriter, redisCacheConfiguration);
    }
}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/62021.html

相關(guān)文章

  • java并發(fā)編程學(xué)習(xí)20--基于springboot的秒殺系統(tǒng)實現(xiàn)2--redis緩存

    摘要:在查詢的服務(wù)方法上添加如下注解表明該方法的返回值需要緩存。當(dāng)被緩存的數(shù)據(jù)發(fā)生改變,緩存需要被清理或者修改,這里使用如下注解清除指定的緩存。事務(wù)是一個原子操作,所有的緩存,消息,這種非強一致性要求的操作,都應(yīng)該在事務(wù)成功提交后執(zhí)行。 【為什么使用redis 性能極高,redis能讀的速度是110000次/s,寫的速度是81000次/s 豐富的數(shù)據(jù)類型,redis支持二進(jìn)制案例的 Str...

    bovenson 評論0 收藏0
  • Redis詳解 - SpringBoot整合RedisRedisTemplate和注解兩種方式的使

    摘要:和注解的方法返回值要一致刪除緩存在需要刪除緩存的方法上加注解,執(zhí)行完這個方法之后會將中對應(yīng)的記錄刪除。代表返回值,意思是當(dāng)返回碼不等于時不緩存,也就是等于時才緩存。返回值特定值如果被設(shè)置了如果沒有被設(shè)置例子自動將對應(yīng)到并且返回原來對應(yīng)的。 本文主要講 Redis 的使用,如何與 SpringBoot 項目整合,如何使用注解方式和 RedisTemplate 方式實現(xiàn)緩存。最后會給一個用...

    SexySix 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<