jetcache阅读笔记

简介

jetcache类似spring cache,但是多一些自动过期、自动刷新、分布式锁等功能。由于只是选择感兴趣的部分阅读,所以难免有所缺漏,还望多多理解。我阅读的版本为2.5。

注解实现原理

jetcache可以通过api调用实现功能,但是我们更习惯于使用简洁的注解来实现缓存功能。将注解(@Cached、@CacheUpdate…)加在方法上,然后通过动态代理将方法增强,从而实现缓存功能。
jetcache官方文档
https://github.com/alibaba/jetcache/wiki/Home_CN

注解解析过程

既然是动态代理,那么如何代理呢?
CachePointcut中有两个方法:
1.

public boolean matches(Class clazz)

该方法用户判断clazz是否在basePackages里面,改目录下的类,才有机会被jetcache动态代理。通过@EnableMethodCache的basePackages配置。
2.

public boolean matches(Method method, Class targetClass)

该方法会调用CacheConfigUtil的parse方法,将方法上的注解信息保存到CacheInvokeConfig对象中。然后保存到ConfigMap,key为方法,value为CacheInvokeConfig,即可以根据方法找到方法上的配置信息。

JetCacheInterceptor的invoke方法代理了原来的方法。当方法可以通过ConfigMap找到对应CacheInvokeConfig时,则创建一个CacheInvokeContext,用来保存这次调用的信息(如被代理的原方法,当没有缓存或是缓存更新时,先从context获取原方法,然后缓存调用结果)。然后调用CacheHandler.invoke(context),进行缓存的保存、更新、删除操作,并在必要的时候调用原方法去查数据库。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值