MMKVAppExtension 1.3.9

MMKVAppExtension 1.3.9

lingol维护。



  • 作者
  • guoling

license PRs Welcome Release Version Platform

中文版本请参阅这里

MMKV是一个强大的、紧凑的、易于使用的移动端键值存储框架,用于微信应用。目前可在AndroidiOS/macOSWin32POSIX上进行使用。

MMKV for Android

特性

  • 高效。MMKV利用mmap来保持内存与文件的同步,并使用protobuf进行值的编码/解码,充分发挥Android的性能优势。

    • 多进程并发:MMKV支持进程间的并发读读和读写访问。
  • 易于使用。您可以使用MMKV直接进行操作。所有更改都会立即保存,不需要sync,也不需要apply调用。

  • 小型.

    • 很少的文件:MMKV包含进程锁、编解码辅助程序和mmap逻辑,再无其他。它非常整洁。
    • 约50K的字节大小:MMKV为每个架构增加约50K的应用程序大小,在压缩时(APK)甚至更小。

开始使用

通过Maven进行安装

将以下行添加到您的应用模块中的 build.gradle

dependencies {
    implementation 'com.tencent:mmkv:1.3.0'
    // replace "1.3.0" with any available version
}

有关其他安装选项,请参阅 Android 设置

快速教程

您可以直接使用 MMKV。所有更改都会立即保存,无需任何 syncapply 调用。
在 App 启动时设置 MMKV,例如在您的 Application 类中添加这些行

public void onCreate() {
    super.onCreate();

    String rootDir = MMKV.initialize(this);
    System.out.println("mmkv root: " + rootDir);
    //……
}

MMKV 有一个全局实例,可以直接使用

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");

MMKV 还支持 多进程访问。完整教程请参阅此处 Android 教程

性能

写入1000次随机 int,我们得到此图表

有关更多基准数据,请参阅 我们的基准

MMKV for iOS/macOS

特性

  • 高效。MMKV使用mmap将内存与文件同步,并使用protobuf进行值编解码,最大限度地利用iOS/macOS,以实现最佳性能。

  • 易于使用。您可以像使用一般内容一样使用MMKV,无需任何配置。所有更改都会立即保存,不需要同步调用。

  • 小型.

    • 少量文件:MMKV包含编解码辅助程序和mmap逻辑,除此之外别无其他。它非常整洁。
    • 二进制大小不到30K:MMKV每个架构对应用程序大小增加不到30K,而在压缩(IPA)时更少。

入门

通过CocoaPods安装

  1. 安装CocoaPods;
  2. 打开终端,使用cd命令进入您的项目目录,运行pod repo update来让CocoaPods了解最新的MMKV版本;
  3. 编辑Podfile,在您的应用程序目标中添加pod 'MMKV'
  4. 运行pod install
  5. 打开CocoaPods生成的.xcworkspace文件;
  6. #import <MMKV/MMKV.h>添加到您的源文件中,操作完成。

有关其他安装选项,请参阅iOS/macOS 布署

快速教程

您可以在使用过程中使用MMKV,无需配置。所有更改会立即保存,不需要调用synchronize

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // init MMKV in the main thread
    [MMKV initializeMMKV:nil];

    //...
    return YES;
}

MMKV 有一个全局实例,可以直接使用

MMKV *mmkv = [MMKV defaultMMKV];
    
[mmkv setBool:YES forKey:@"bool"];
BOOL bValue = [mmkv getBoolForKey:@"bool"];
    
[mmkv setInt32:-1024 forKey:@"int32"];
int32_t iValue = [mmkv getInt32ForKey:@"int32"];
    
[mmkv setString:@"hello, mmkv" forKey:@"string"];
NSString *str = [mmkv getStringForKey:@"string"];

MMKV还支持多进程访问。完整的教程可以在这里找到:链接

性能

对10000次随机的int进行写入,我们得到这张图表

有关更多基准数据,请参阅我们的基准

MMKV for Win32

特性

  • 高效。MMKV使用mmap来使内存与文件同步,并使用protobuf来编码/解码值,充分发挥Windows的优势,以实现最佳性能。

    • 多进程并发:MMKV支持进程间的并发读读和读写访问。
  • 易用。您可以在使用过程中使用MMKV。所有更改会立即保存,不需要调用savesync

  • 小型.

    • 很少的文件:MMKV包含进程锁、编解码辅助程序和mmap逻辑,再无其他。它非常整洁。
    • 大约10K的二进制大小:MMKV在应用大小上增加约10K,在压缩后会更少。

开始使用

通过源代码安装

  1. 从 git 仓库获取源代码

    git clone https://github.com/Tencent/MMKV.git
    
  2. Win32/MMKV/MMKV.vcxproj 添加到您的解决方案中;

  3. MMKV 项目添加到您项目的依赖项中;

  4. $(OutDir)include 添加到您的项目的 C/C++ -> 通用 -> 附加包含目录

  5. $(OutDir) 添加到您的项目的 链接器 -> 通用 -> 附加库目录

  6. MMKV.lib 添加到您的项目的 链接器 -> 输入 -> 附加依赖项

  7. #include <MMKV/MMKV.h> 添加到您的源文件中,然后我们就完成了。

注意

  1. MMKV 默认使用 MT/MTd 运行时编译。如果您的项目使用 MD/MDd,则应将 MMKV 的设置更改为匹配您的项目 (C/C++ -> 代码生成 -> 运行库),反之亦然。
  2. MMKV 是使用 Visual Studio 2017 开发的,如果您使用的是不同版本的 Visual Studio,请更改 平台工具集合

有关其他安装选项,请参阅 Win32 安装

快速教程

您可以使用 MMKV,所有更改都会立即保存,不需要 syncsave 调用。
在应用程序启动时设置 MMKV,例如在您的 main() 中,添加以下行

#include <MMKV/MMKV.h>

int main() {
    std::wstring rootDir = getYourAppDocumentDir();
    MMKV::initializeMMKV(rootDir);
    //...
}

MMKV 有一个全局实例,可以直接使用

auto mmkv = MMKV::defaultMMKV();

mmkv->set(true, "bool");
std::cout << "bool = " << mmkv->getBool("bool") << std::endl;

mmkv->set(1024, "int32");
std::cout << "int32 = " << mmkv->getInt32("int32") << std::endl;

mmkv->set("Hello, MMKV for Win32", "string");
std::string result;
mmkv->getString("string", result);
std::cout << "string = " << result << std::endl;

MMKV 还支持 多进程访问。完整的教程可以在这里找到 Win32 教程

MMKV for POSIX

特性

  • 高效性. MMKV 利用 mmap 将内存与文件同步,并用 protobuf 对值进行编码/解码,充分运用 POSIX 以实现最佳性能。

    • 多进程并发:MMKV支持进程间的并发读读和读写访问。
  • 易用。您可以在使用过程中使用MMKV。所有更改会立即保存,不需要调用savesync

  • 小型.

    • 很少的文件:MMKV包含进程锁、编解码辅助程序和mmap逻辑,再无其他。它非常整洁。
    • 二进制大小约 7K:MMKV 在应用大小上增加了约 7K,如果是压缩的则更少。

入门

通过 CMake 安装

  1. 从 Git 仓库获取源代码

    git clone https://github.com/Tencent/MMKV.git
    
  2. 编辑您的 CMakeLists.txt 文件,添加以下行

    add_subdirectory(mmkv/POSIX/src mmkv)
    target_link_libraries(MyApp
        mmkv)
  3. #include "MMKV.h" 添加到您的源文件中,现在已完成。

有关其他安装选项,请参阅 POSIX 配置

快速教程

您可以使用 MMKV,所有更改都会立即保存,不需要 syncsave 调用。
在应用程序启动时设置 MMKV,例如在您的 main() 中,添加以下行

#include "MMKV.h"

int main() {
    std::string rootDir = getYourAppDocumentDir();
    MMKV::initializeMMKV(rootDir);
    //...
}

MMKV 有一个全局实例,可以直接使用

auto mmkv = MMKV::defaultMMKV();

mmkv->set(true, "bool");
std::cout << "bool = " << mmkv->getBool("bool") << std::endl;

mmkv->set(1024, "int32");
std::cout << "int32 = " << mmkv->getInt32("int32") << std::endl;

mmkv->set("Hello, MMKV for Win32", "string");
std::string result;
mmkv->getString("string", result);
std::cout << "string = " << result << std::endl;

MMKV 还支持 多进程访问。完整的教程可以在这里找到 POSIX 教程

许可协议

MMKV 采用 BSD 3-Clause 许可协议发布。详细信息请查看 LICENSE.TXT

变更日志

有关变更历史的详细信息,请查看 CHANGELOG.md

贡献

如果您对贡献感兴趣,请查看 CONTRIBUTING.md,并加入我们的 腾讯开源计划

为了明确对成员的期望,MMKV 采用了贡献者盟约中定义的行为准则,该准则被广泛采用。我们认为它很好地阐述了我们的价值观。更多信息请查看 Code of Conduct

常见问题与反馈

首先查看 常见问题。如有任何疑问,请随时创建 问题

个人信息保护规则

用户隐私非常被重视:MMKV不会获取、收集或上传任何个人信息。请参阅MMKV SDK个人信息保护规则获取详细信息。