标签归档:kotlin

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

免费的计算机编程类中文书籍,欢迎投稿

免费的编程中文书籍索引

免费的编程中文书籍索引,欢迎投稿.

如果这个仓库对你有帮助,欢迎stars.

欢迎大家将珍藏已久的经典免费书籍共享出来,您可以:

https://github.com/justjavac/free-programming-books-zh_CN/graphs/contributors:贡献者名单

缩放比例

斯威夫特

返回目录

读书笔记及其它

参与交流

测试相关

目录

编译原理

置顶

函数式概念

操作系统

计算机图形学

智能系统

WEB服务器

分布式系统

版本控制

编译原理

编辑器

函数式概念

NoSQL

计算机图形学

PostgreSQL

网络服务器

MySQL

版本控制

管理和监控

编辑器

项目相关

NoSQL

设计模式

PostgreSQL

Web

MySQL

大数据

管理和监控

编程艺术

项目相关

其它

设计模式

Android

网络

APP

大数据

AWK

编程艺术

C/C++

其它

C#

安卓系统

Clojure

应用程序

CSS/HTML

AWK

Dart

C/C++

Elixir

C#

Erlang

封闭式

Fortran

CSS/HTML

Go

省道

Groovy

灵丹妙药

Haskell

二郎

iOS

Fortran

Java

JavaScript

Kotlin

时髦的

LaTeX

哈斯克尔

LISP

IOS

Lua

Java语言

OCaml

JavaScript

Perl

科特林

PHP

乳胶

Prolog

口齿不清

Python

路亚

R

OCaml

Ruby

Perl

Rust

PHP

Scala

序言

Shell

蟒蛇

Swift

R

读书笔记及其它