RxCache源码心得(1)

看了一遍RxCache的源码,以及一些相关的RxCache源码分析文章,有所心得,大致走一下源码分析的整个流程。

这里是GitHub项目地址

RxCache是二级缓存,在内存和磁盘两处都做了缓存,所以索性先从Action这个抽象类开始分析。

abstract class Action {
  ...

  protected final Memory memory;
  protected final Persistence persistence;

  public Action(Memory memory, Persistence persistence) {
    this.memory = memory;
    this.persistence = persistence;
  }
  ...
}

Action封装了Memory(代表内存),Persistence(代表磁盘)两个接口,

protected String composeKey(String providerKey, String dynamicKey, String dynamicKeyGroup) {
    return providerKey
        + PREFIX_DYNAMIC_KEY
        + dynamicKey
        + PREFIX_DYNAMIC_KEY_GROUP
        + dynamicKeyGroup;
  }

从Action的composeKey方法可以看出很多,如果把缓存的标识叫做key,那么能组成(compose)它的就是三个关键要素,providerKey,dynamicKey,dynamicKeyGroup。其实RxCache的使用过程就是在接口方法上打上这三个要素的注解,用来确定是为这个接口方法获取的数据作缓存。

然后getKeysOnMemoryMatchingProviderKey方法可以根据providerKey在Memory查找缓存,还有getKeysOnMemoryMatchingDynamicKey根据providerKey,dynamicKey查找,getKeyOnMemoryMatchingDynamicKeyGroup方法因为参数中三个要素条件都有,不需要查找,直接返回组成的key。

Action类应该很容易理解,接下来说一下它的实现类,分别是EvictExpirableRecordsPersistence,EvictExpiredRecordsPersistence,EvictRecord,RetrieveRecord,GetDeepCopy,SaveRecord。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值