Loading...

文章背景图

MMKV:微信高效轻量键值存储框架接入与使用指南

2026-10-16
0
- 字
- 分钟

MMKV:微信高效轻量键值存储框架接入与使用指南

一、项目官方信息

项目 信息
GitHub 仓库 Tencent/MMKV
中文文档 README_CN
开源协议 BSD-3-Clause
主要语言 C++
Star 数 约 19k
最新版本 v2.4.3

MMKV 是微信中使用的高效、轻量、易用的移动端键值存储框架。它支持 Android、iOS/macOS、Windows、POSIX 与 HarmonyOS NEXT,并提供实验性的 Kotlin Multiplatform 支持。MMKV 基于 mmap 内存映射,用 protobuf 编解码,兼顾性能与易用性。

MMKV 仓库封面

二、官方图片

上图为 MMKV 仓库在 GitHub 上的社交预览图。

三、环境要求

  • Android:minSdk 16+;自 v2.0.0 起不再支持 32 位与 API 21/22,旧设备请用 v1.3.x LTS;
  • iOS/macOS:Xcode,支持 CocoaPods 或 SPM;
  • 其他平台:Windows、POSIX 可直接编译 C++ 核心;
  • KMP:实验性包,当前目标 Android 与 iOS。

四、接入步骤

1. Android 接入(Maven)

在 app 模块的 build.gradle 中加入:

dependencies {
    implementation 'com.tencent:mmkv:2.4.3'
}

2. 初始化(Android)

在 Application.onCreate 中初始化:

public void onCreate() {
    super.onCreate();
    String rootDir = MMKV.initialize(this);
    System.out.println("mmkv root: " + rootDir);
}

3. 读写数据

import com.tencent.mmkv.MMKV;
MMKV kv = MMKV.defaultMMKV();
kv.encode("bool", true);
boolean bValue = kv.decodeBool("bool");

kv.encode("int", Integer.MIN_VALUE);
int iValue = kv.decodeInt("int");

kv.encode("string", "Hello from mmkv");
String str = kv.decodeString("string");

所有改动立即写入文件,无需 apply() 或 commit()。

4. iOS/macOS 接入(CocoaPods)

pod 'MMKV'

在 didFinishLaunchingWithOptions 中初始化:

[MMKV initializeMMKV:nil];
MMKV *mmkv = [MMKV defaultMMKV];
[mmkv setBool:YES forKey:@"bool"];
BOOL bValue = [mmkv getBoolForKey:@"bool"];

5. Kotlin Multiplatform 接入

kotlin {
    sourceSets {
        commonMain.dependencies {
            implementation("com.tencent:mmkv-kmp:2.4.3")
        }
    }
}

五、使用方法

  • 多进程并发:支持进程间读-读、读-写并发访问;
  • 高性能:mmap + protobuf,随机写 int 1000 次的基准数据优于 SharedPreferences;
  • 多类型:支持 bool、int、float、double、string、bytes;
  • 轻量:Android 约 50K/架构,iOS 约 30K/架构;
  • 迁移:可一键迁移 SharedPreferences / NSUserDefaults 数据;
  • 自定义实例:MMKV.mmkvWithID("myID") 按业务隔离存储。

六、常见问题 FAQ

  1. MMKV 和 SharedPreferences 区别? 基于 mmap 内存映射,写入即时生效,无需 apply,性能更高。

  2. 支持多进程吗? 支持,可在进程间并发读写。

  3. 自 v2.0.0 有什么变化? 不再支持 32 位与 API 21/22,旧设备请用 v1.3.x LTS。

  4. 支持哪些平台? Android、iOS/macOS、Windows、POSIX、HarmonyOS NEXT,KMP 实验支持。

  5. 怎么隔离不同业务的数据? 用 mmkvWithID 创建自定义实例。

  6. 可以迁移旧 SharedPreferences 吗? 可以,MMKV 提供迁移 API。

七、跳转链接

评论交流

文章目录