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

資訊專欄INFORMATION COLUMN

springboot注解方式使用redis緩存

Muninn / 3514人閱讀

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

引入依賴庫

在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
應用到寫數據的方法上,如新增/修改方法
@CachePut(value = "product", key = "#root.targetClass+"-"+#product.id")
@CacheEvict 
即應用到移除數據的方法上,如刪除方法
@CacheEvict(value = "product", key = "#root.targetClass+"-"+#id")
提供的SpEL上下文數據

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

名字 位置 描述 示例
methodName root對象 當前被調用的方法名 #root.methodName
method root對象 當前被調用的方法 #root.method.name
target root對象 當前被調用的目標對象 #root.target
targetClass root對象 當前被調用的目標對象類 #root.targetClass
args root對象 當前被調用的方法的參數列表 #root.args[0]
caches root對象 當前方法調用使用的緩存列表(如@Cacheable(value={"cache1", "cache2"})),則有兩個cache #root.caches[0].name
argument name 執行上下文 當前被調用的方法的參數,如findById(Long id),我們可以通過#id拿到參數 #user.id
result 執行上下文 方法執行后的返回值(僅當方法執行之后的判斷有效,如‘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);
    }
}

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/62021.html

相關文章

  • java并發編程學習20--基于springboot的秒殺系統實現2--redis緩存

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

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

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

    SexySix 評論0 收藏0

發表評論

0條評論

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