Skip to content
Tony Shen edited this page Nov 6, 2021 · 28 revisions

RxCache

RxCache 是一款支持 Java 和 Android 的 Local Cache 。目前支持内存、堆外内存、磁盘缓存。

Feature:

  • 支持二级缓存:Memory、Persistence
  • 各个缓存可以拥有有效时间,超过时间缓存会过期
  • Memory 默认支持 FIFO、LRU、LFU 算法的实现
  • Memory 支持 Guava Cache、Caffeine、MapDB、OHC、Chronicle-Map 的实现
  • Memory 支持堆外内存(off-heap)
  • Persistence 默认使用 Gson 实现对象的序列化和反序列化
  • Persistence 支持使用 FastJSON、Moshi、Kryo、Hessian、FST、Protobuf 实现对象的序列化和反序列化
  • Persistence 的 AbstractConverter 拥有加密功能,默认使用 AES 128、DES 算法进行加密
  • 支持显示缓存的信息,包括 Memory 缓存使用的统计数据,Persistence 使用的类型和 Converter 的类型
  • 支持缓存 key 同步删除、异步删除的策略
  • 支持 Kotlin, 特别是使用 kotlin extension 模块,可以规避范型擦除
  • 支持 Kotlin Coroutines
  • 支持 Result
  • 使用 Builder 模式可以生成复杂对象的 Type
  • 线程安全
  • 支持 RxJava 3、RxJava 2
  • 支持 Retrofit 风格使用缓存

RxCache 的设计:

下图是 rxcache-core 模块的 uml 类图

RxCache 包含了两级缓存: Memory 和 Persistence 。

Memory 的默认实现 FIFOMemoryImpl、LRUMemoryImpl、LFUMemoryImpl 分别使用 FIFO、LRU、LFU 算法来缓存数据。

RxCache 还有 Guava Cache、Caffeine 单独的模块来实现 Memory。它们都是成熟的 Local Cache,如果不想使用默认的缓存实现,完全可以使用这些模块成熟的替代方案。

Persistence 的接口跟 Memory 很类似。考虑到持久层可以包括 Disk、DB,于是分别单独抽象了 Disk、DB 接口继承 Persistence。

Getting Started

Java

Kotlin

Android

Information

Clone this wiki locally