引入MAVEN包
<dependency>
<groupId>com.alicp.jetcache</groupId>
<artifactId>jetcache-starter-redis-lettuce</artifactId>
<version>${jetcache.latest.version}</version>
</dependency>
<jetcache.latest.version>2.7.2</jetcache.latest.version>
在使用JetCache时,可能会遇到@EnableCreateCacheAnnotation注解被弃用的问题。这是因为JetCache 2.7版本已经被弃用,所以需要降低JetCache的版本来解决该问题。
启动类添加参数
@EnableFeignClients
@EnableMethodCache(basePackages = "com.xx")
配置文件
jetcache.statIntervalMinutes=60
jetcache.areaInCacheName=false
jetcache.local.default.type=caffeine
jetcache.local.default.keyConvertor=fastjson
jetcache.local.default.limit=100
jetcache.remote.default.type=redis.lettuce
jetcache.remote.default.uri=redis://密码@用户名名:6379/
jetcache.remote.default.keyConvertor=fastjson2
jetcache.remote.default.valueEncoder=java
jetcache.remote.default.valueDecoder=java
jetcache.remote.default.poolConfig.minIdle=5
jetcache.remote.default.poolConfig.maxIdle=20
jetcache.remote.default.poolConfig.maxTotal=50
增加配置类,使用代码方式用缓存
@Configuration
public class JetcacheConfig {
@Autowired
private CacheManager cacheManager;
//优惠券规则表
private Cache<Integer, Object> promotionsRulerCache;
@PostConstruct
public void init(){
QuickConfig qc = QuickConfig.newBuilder(RedisConstants.PROMOTIONS_LIST_RULER)
.expire(Duration.ofSeconds(600))
.cacheType(CacheType.REMOTE)
// 本地缓存更新后,将在所有的节点中删除缓存,以保持强一致性
.syncLocal(false)
.build();
promotionsRulerCache = cacheManager.getOrCreateCache(qc);
}
@Bean
public Cache<Integer, Object> getPromotionsRulerCache(){
return promotionsRulerCache;
}
}
@Autowired
private Cache<Integer, Object> promotionsRulerCache;
查
if(promotionsRulerCache.get(promoId) != null){
return (PromotionsCouponRule) promotionsRulerCache.get(promoId);
}
删
promotionsRulerCache.remove(actId);
增
promotionsRulerCache.put(promoId,promotionsCouponRule);
通过注解的方式
@Cached(name= RedisConstants.PROMOTIONS_LIST_BIND_GOODS, key = "#promotionsList.id", expire = 120, timeUnit = TimeUnit.SECONDS, cacheType = CacheType.REMOTE)
public List<Long> getPromotionGoodsList(PromotionsList promotionsList){}