大家好,我是爱学习的了不起!
在实际开发中,缓存是必须要使用的组件,一般是本地缓存和分布式缓存同时使用。使用Spring Cache进行接口数据的缓存,有个弊端就是没法设置缓存过期时间,需要自行去扩展。
今天了不起给大家推荐一款阿里开源的缓存组件 – jetcache,可以解决上述问题。
项目简介
jetcache 上手简单、性能高效、拓展性强。支持本地缓存、分布式缓存、多级缓存,支持TTL、分布式自动刷新支持缓存预热 、缓存key前缀等功能。同时还提供了Cache
接口用于手工缓存操作。
jetcache 目前开源的实现有RedisCache、CaffeineCache(in memory)和LinkedHashMapCache
(in memory)。
快速使用
引入依赖
1 2 3 4 5
| <dependency> <groupId>com.alicp.jetcache</groupId> <artifactId>jetcache-starter-redis</artifactId> <version>${jetcache.latest.version}</version> </dependency>
|
配置缓存
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| etcache: statIntervalMinutes: 15 areaInCacheName: false local: default: type: linkedhashmap keyConvertor: fastjson remote: default: type: redis keyConvertor: fastjson2 broadcastChannel: projectA valueEncoder: java valueDecoder: java poolConfig: minIdle: 5 maxIdle: 20 maxTotal: 50 host: localhost port: 6379
|
开启缓存
1 2 3 4 5 6 7 8
| @SpringBootApplication @EnableMethodCache(basePackages = "com.demo.mypackage") @EnableCreateCacheAnnotation public class SpringBootApp { public static void main(String[] args) { SpringApplication.run(MySpringBootApp.class); } }
|
EnableMethodCache 激活 @Cached。
方法缓存
1 2
| @Cached(name="selectUserById", key="#userId" expire = 300, cacheType=CacheType.BOTH) User selectUserById(long userId);
|
name:缓存名称
key:缓存key,追加到name后面构成唯一的缓存key, 使用 SpEL 指定key,如果没有指定会根据所有参数自动生成。
expire:缓存失效时间
cacheType:缓存的类型,包括CacheType.REMOTE、CacheType.LOCAL、CacheType.BOTH。如果定义为BOTH,会使用LOCAL和REMOTE组合成两级缓存
注意:实体类一定要实现序列化,同时要定义serialVersionUID 属性。
缓存实例
配置缓存
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| @Autowired private CacheManager cacheManager; private Cache<Long, Object> userCache;
@PostConstruct public void init(){ QuickConfig quickConfig = QuickConfig.newBuilder("userCache:") .expire(Duration.ofSeconds(3600)) .cacheType(CacheType.BOTH) .syncLocal(false) .build(); userCache = cacheManager.getOrCreateCache(quickConfig); }
@Bean public Cache<Long, Object> getUserCache(){ return userCache; }
|
使用缓存
1 2
| User user = userCache.get(1L); userCache.put(1L, user);
|
项目地址
1
| https://github.com/alibaba/jetcache
|
总结
JetCache是阿里巴巴开源的通用缓存访问框架,支持多种缓存类型,使用简单,感兴趣的小伙伴赶快去试试吧。
写在最后
欢迎加我微信,邀请加入 交流群,目前群里都在讨论整理更多GPT玩法,教你如何更好的调教使用GPT,提升效率,甚至如何使用GPT赚钱等等,欢迎围观~
问君能有几多愁,开源项目解千愁,我们下期再见!
大家的点赞、收藏和评论对了不起非常重要,如文章对你有帮助还请转发支持下,谢谢!