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