-
Notifications
You must be signed in to change notification settings - Fork 15
Home
Tony Shen edited this page Nov 6, 2021
·
28 revisions
RxCache 是一款支持 Java 和 Android 的 Local Cache 。目前支持内存、堆外内存、磁盘缓存。
- 支持二级缓存: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-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。
- General
- Memory
- Persistence
-
Disk
-
Serialization
- Gson
- Fastjson
- Moshi
- Kryo
- Hessian
- FST
- Protobuf
-
Encryption
- AES 128
- DES
-
Serialization
-
Disk
- Cache Statistics
- Spring