MMKV是一种高效,小的,易于使用微信应用中使用的移动键值存储框架。它目前在以下位置可用安卓系统,iOS/MacOS,Win32和POSIX
适用于Android的MMKV
功能
- 高效MMKV使用mmap与文件保持内存同步,使用协议buf对值进行编码/解码,充分利用Android实现最佳性能
- 易于使用你可以边走边用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
性能
随机写入int
1000次之后,我们得到了这个图表:
有关更多基准数据,请参阅our benchmark
适用于iOS/MacOS的MMKV
功能
- 高效MMKV使用mmap与文件保持内存同步,使用协议buf对值进行编码/解码,充分利用IOS/MacOS实现最佳性能
- 易于使用你可以随时随地使用MMKV,不需要配置。所有更改都会立即保存,否
synchronize
需要的呼叫数
- 小的
- 几个文件:mmkv包含编码/解码助手和mmap逻辑,仅此而已。真的很整洁
- 二进制大小小于30K:MMKV对每个架构的应用程序大小增加不到30K,压缩后(IPA)增加的更少
快速入门
通过CocoaPods安装:
- 安装CocoaPods;
- 开放式终端,
cd
到您的项目目录,运行pod repo update
使CocoaPods了解最新的MMKV版本;
- 编辑您的Podfile,添加
pod 'MMKV'
发送到您的应用程序目标;
- 跑
pod install
;
- 打开
.xcworkspace
CocoaPods生成的文件;
- 添加
#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。所有更改都会立即保存,否
save
,否sync
需要的呼叫数
- 小的
- 几个文件:MMKV包含进程锁、编码/解码助手和mmap逻辑等。真的很整洁
- 二进制大小约为10K:MMKV增加了大约10K的应用程序大小,而压缩后的应用程序大小要少得多
快速入门
通过源安装
- 从GIT存储库获取源代码:
git clone https://github.com/Tencent/MMKV.git
- 添加
Win32/MMKV/MMKV.vcxproj
您的解决方案;
- 添加
MMKV
项目到项目的依赖项;
- 添加
$(OutDir)include
到您的项目的C/C++
->General
->Additional Include Directories
;
- 添加
$(OutDir)
到您的项目的Linker
->General
->Additional Library Directories
;
- 添加
MMKV.lib
到您的项目的Linker
->Input
->Additional Dependencies
;
- 添加
#include <MMKV/MMKV.h>
添加到您的源文件中,我们就完成了
注:
- MMKV是用
MT/MTd
默认情况下运行时。如果您的项目使用MD/MDd
,您应该更改MMKV的设置以匹配您的项目(C/C++
->Code Generation
->Runtime Library
),或反之亦然
- 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。所有更改都会立即保存,否
save
,否sync
需要的呼叫数
- 小的
- 几个文件:MMKV包含进程锁、编码/解码助手和mmap逻辑等。真的很整洁
- 二进制大小约为7K:MMKV增加了大约7K的应用程序大小,而压缩后的大小要少得多
快速入门
通过CMake安装
- 从GIT存储库获取源代码:
git clone https://github.com/Tencent/MMKV.git
- 编辑您的
CMakeLists.txt
,添加以下行:
add_subdirectory(mmkv/POSIX/src mmkv)
target_link_libraries(MyApp
mmkv)
- 添加
#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