阿里巴巴开源的通用缓存访问框架太好用了!


大家好,我是爱学习的了不起!

在实际开发中,缓存是必须要使用的组件,一般是本地缓存和分布式缓存同时使用。使用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:
# 统计间隔,0表示不统计
statIntervalMinutes: 15
areaInCacheName: false
#local表示本地缓存
local:
default:
# 缓存类型 redis为当前支持的远程缓存;linkedhashmap、caffeine为当前支持的本地缓存类型
type: linkedhashmap
# Key的转换器
keyConvertor: fastjson
#remote 表示远程缓存
remote:
default:
type: redis
keyConvertor: fastjson2
#多个服务共用redis同一个channel可能会造成广播风暴,需要在这里指定channel
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赚钱等等,欢迎围观~

图片

问君能有几多愁,开源项目解千愁,我们下期再见!

大家的点赞、收藏和评论对了不起非常重要,如文章对你有帮助还请转发支持下,谢谢!


文章作者: 开源小分队
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 开源小分队 !
  目录