RxCache源码心得(1)

本文深入探讨RxCache的源码,从Action抽象类开始,分析Memory和Persistence接口,讲解缓存检索、清理和保存的实现细节。涉及EvictExpirableRecordsPersistence、EvictExpiredRecordsPersistence、EvictRecord、RetrieveRecord、GetDeepCopy和SaveRecord等关键类的功能和工作原理。
摘要由CSDN通过智能技术生成

看了一遍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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值