标签归档:flutter

MMKV-微信开发的高效、小型的移动键值存储框架。适用于Android、iOS、MacOS、Windows和POSIX

MMKV是一种高效小的易于使用微信应用中使用的移动键值存储框架。它目前在以下位置可用安卓系统iOS/MacOSWin32POSIX

适用于Android的MMKV

功能

  • 高效MMKV使用mmap与文件保持内存同步,使用协议buf对值进行编码/解码,充分利用Android实现最佳性能
    • 多进程并发:MMKV支持进程间并发读写访问
  • 易于使用你可以边走边用MMKV。所有更改都会立即保存,否sync,否apply需要的呼叫数
  • 小的
    • 几个文件:MMKV包含进程锁、编码/解码助手和mmap逻辑等。真的很整洁
    • 二进制大小约为50K:MMKV在应用程序大小上为每个架构增加约50K,压缩后增加的更少(Apk)

快速入门

通过Maven安装

将以下行添加到build.gradle在您的应用程序模块上:

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

从1.2.8版本开始,MMKV已经已迁移到Maven Central旧版本(<=v1.2.7)仍可在JCenter上使用
有关其他安装选项,请参见Android Setup

快速教程

你可以边走边用MMKV。所有更改都会立即保存,否sync,否apply需要的呼叫数
在应用程序启动时设置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 Tutorial

性能

随机写入int1000次之后,我们得到了这个图表:

有关更多基准数据,请参阅our benchmark

适用于iOS/MacOS的MMKV

功能

  • 高效MMKV使用mmap与文件保持内存同步,使用协议buf对值进行编码/解码,充分利用IOS/MacOS实现最佳性能
  • 易于使用你可以随时随地使用MMKV,不需要配置。所有更改都会立即保存,否synchronize需要的呼叫数
  • 小的
    • 几个文件:mmkv包含编码/解码助手和mmap逻辑,仅此而已。真的很整洁
    • 二进制大小小于30K:MMKV对每个架构的应用程序大小增加不到30K,压缩后(IPA)增加的更少

快速入门

通过CocoaPods安装:

  1. 安装CocoaPods
  2. 开放式终端,cd到您的项目目录,运行pod repo update使CocoaPods了解最新的MMKV版本;
  3. 编辑您的Podfile,添加pod 'MMKV'发送到您的应用程序目标;
  4. pod install
  5. 打开.xcworkspaceCocoaPods生成的文件;
  6. 添加#import <MMKV/MMKV.h>添加到您的源文件中,我们就完成了

有关其他安装选项,请参见iOS/macOS Setup

快速教程

你可以随时随地使用MMKV,不需要配置。所有更改都会立即保存,否synchronize需要打电话。在应用程序启动时设置MMKV,在您的-[MyApp application: didFinishLaunchingWithOptions:],添加以下行:

- (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还支持多进程访问可以找到完整的教程here

性能

随机写入int对于10000次,我们得到了这个图表:

有关更多基准数据,请参阅our benchmark

适用于Win32的MMKV

功能

  • 高效MMKV使用mmap与文件保持内存同步,使用协议buf对值进行编码/解码,充分利用Windows实现最佳性能
    • 多进程并发:MMKV支持进程间并发读写访问
  • 易于使用你可以边走边用MMKV。所有更改都会立即保存,否save,否sync需要的呼叫数
  • 小的
    • 几个文件: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++->General->Additional Include Directories
  5. 添加$(OutDir)到您的项目的Linker->General->Additional Library Directories
  6. 添加MMKV.lib到您的项目的Linker->Input->Additional Dependencies
  7. 添加#include <MMKV/MMKV.h>添加到您的源文件中,我们就完成了

注:

  1. MMKV是用MT/MTd默认情况下运行时。如果您的项目使用MD/MDd,您应该更改MMKV的设置以匹配您的项目(C/C++->Code Generation->Runtime Library),或反之亦然
  2. MMKV是用Visual Studio 2017开发的,更改Platform Toolset如果使用不同版本的Visual Studio

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

快速教程

你可以边走边用MMKV。所有更改都会立即保存,否sync,否save需要的呼叫数
在应用程序启动时设置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 Tutorial

用于POSIX的MMKV

功能

  • 高效MMKV使用mmap来保持内存与文件的同步,使用protocol buf来编解码值,充分利用POSIX来实现最佳性能
    • 多进程并发:MMKV支持进程间并发读写访问
  • 易于使用你可以边走边用MMKV。所有更改都会立即保存,否save,否sync需要的呼叫数
  • 小的
    • 几个文件: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 Setup

快速教程

你可以边走边用MMKV。所有更改都会立即保存,否sync,否save需要的呼叫数
在应用程序启动时设置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 Tutorial

许可证

MMKV是在BSD 3条款许可下发布的。有关详细信息,请查看LICENSE.TXT

更改日志

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

贡献

如果您对贡献感兴趣,请查看CONTRIBUTING.md,也加入我们的Tencent OpenSource Plan

为了明确对我们的成员的期望,MMKV通过了被广泛使用的贡献者公约定义的行为准则。我们认为它很好地表达了我们的价值观。有关更多信息,请查看Code of Conduct

常见问题和反馈

请查看FAQ第一。如果有任何问题,请不要犹豫issues