MMKV——基于 mmap 的高性能通用 key-value 组件
Github
MMKV for Android
MMKV for Android 多进程设计与实现
- 基于MMAP 内存映射的移动端通用keyvalue组件。
- 底层的序列化和反序列化使用protobuf实现
- 已经在ios上使用了3年,近期移植到Android平台
- 通过mmap内存映射文件,提供一个内存块,App只管往里面写数据,其他不管,由操作系统负责将内存写回到文件中,不必担心crash导致的数据丢失。
- 在写入的时候,考虑到有增量更新,是将增量kv对象序列化后,通过append到内存的末尾。
多进程实现细节
- MMKV本质上是将文件mmap到内存中,将新增的kv统统append到内存的末尾。
- 到达边界后,进行重整回写以腾出空间,空间还是不够的话,就 double 内存空间
- 对于内存文件中可能存在的重复键值,MMKV 只选用最后写入的作为有效键值
- MMKV 在 Android 多进程 key-value 存储组件上是不二之选