中文版本请参看这里
MMKV es un marco de almacenamiento de valores clave móvil eficiente , pequeño y fácil de usar que se utiliza en la aplicación WeChat. Actualmente está disponible en Android , iOS/macOS , Windows , POSIX y HarmonyOS NEXT .
Eficiente . MMKV usa mmap para mantener la memoria sincronizada con los archivos y protobuf para codificar/decodificar valores, aprovechando al máximo Android para lograr el mejor rendimiento.
Fácil de usar . Puede utilizar MMKV sobre la marcha. Todos los cambios se guardan inmediatamente, no se necesitan sync
ni llamadas apply
.
Pequeño .
Agregue las siguientes líneas a build.gradle
en el módulo de su aplicación:
dependencies {
implementation ' com.tencent:mmkv:2.0.1 '
// replace "2.0.1" with any available version
}
Para otras opciones de instalación, consulte Configuración de Android.
Puede utilizar MMKV sobre la marcha. Todos los cambios se guardan inmediatamente, no se necesitan sync
ni llamadas apply
.
Configure MMKV al iniciar la aplicación, diga su clase Application
, agregue estas líneas:
public void onCreate () {
super . onCreate ();
String rootDir = MMKV . initialize ( this );
System . out . println ( "mmkv root: " + rootDir );
//……
}
MMKV tiene una instancia global que se puede usar directamente:
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 también admite acceso multiproceso . Los tutoriales completos se pueden encontrar aquí Tutorial de Android.
Al escribir int
aleatorio 1000 veces, obtenemos este gráfico:
Para obtener más datos de referencia, consulte nuestro punto de referencia.
Eficiente . MMKV usa mmap para mantener la memoria sincronizada con los archivos y protobuf para codificar/decodificar valores, aprovechando al máximo iOS/macOS para lograr el mejor rendimiento.
Fácil de usar . Puede utilizar MMKV sobre la marcha, no se necesitan configuraciones. Todos los cambios se guardan inmediatamente, no se necesitan llamadas synchronize
.
Pequeño .
cd
al directorio de su proyecto, ejecute pod repo update
para que CocoaPods conozca las últimas versiones de MMKV disponibles;pod 'MMKV'
al destino de su aplicación;pod install
;.xcworkspace
generado por CocoaPods;#import <MMKV/MMKV.h>
a su archivo fuente y listo.Para otras opciones de instalación, consulte Configuración de iOS/macOS.
Puede utilizar MMKV sobre la marcha, no se necesitan configuraciones. Todos los cambios se guardan inmediatamente, no se necesitan llamadas synchronize
. Configure MMKV al iniciar la aplicación, en su -[MyApp application: didFinishLaunchingWithOptions:]
, agregue estas líneas:
- ( BOOL )application:(UIApplication *)application didFinishLaunchingWithOptions:( NSDictionary *)launchOptions {
// init MMKV in the main thread
[MMKV initializeMMKV: nil ];
// ...
return YES ;
}
MMKV tiene una instancia global que se puede usar directamente:
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 también admite acceso multiproceso . Los tutoriales completos se pueden encontrar aquí.
Al escribir int
aleatorio 10000 veces, obtenemos este gráfico:
Para obtener más datos de referencia, consulte nuestro punto de referencia.
Eficiente . MMKV usa mmap para mantener la memoria sincronizada con los archivos y protobuf para codificar/decodificar valores, aprovechando al máximo Windows para lograr el mejor rendimiento.
Fácil de usar . Puede utilizar MMKV sobre la marcha. Todos los cambios se guardan inmediatamente, no se necesitan save
ni realizar llamadas sync
.
Pequeño .
Obteniendo el código fuente del repositorio git:
git clone https://github.com/Tencent/MMKV.git
Agregue Core/core.vcxproj
a su solución;
Agregue el proyecto MMKV
a las dependencias de su proyecto;
Agregue $(OutDir)include
al C/C++
de su proyecto -> General
-> Additional Include Directories
;
Agregue $(OutDir)
al Linker
de su proyecto -> General
-> Additional Library Directories
;
Agregue mmkv.lib
al Linker
de su proyecto -> Input
-> Additional Dependencies
;
Agregue #include <MMKV/MMKV.h>
a su archivo fuente y listo.
nota:
MT/MTd
de forma predeterminada. Si su proyecto usa MD/MDd
, debe cambiar la configuración de MMKV para que coincida con la de su proyecto ( C/C++
-> Code Generation
-> Runtime Library
), o viceversa.Platform Toolset
si usa una versión diferente de Visual Studio.Para otras opciones de instalación, consulte Configuración de Windows.
Puede utilizar MMKV sobre la marcha. Todos los cambios se guardan inmediatamente, no se necesitan sync
ni llamadas save
.
Configure MMKV al iniciar la aplicación, diga en su main()
, agregue estas líneas:
# include < MMKV/MMKV.h >
int main () {
std::wstring rootDir = getYourAppDocumentDir ();
MMKV::initializeMMKV (rootDir);
// ...
}
MMKV tiene una instancia global que se puede utilizar directamente:
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 Windows " , " string " );
std::string result;
mmkv-> getString ( " string " , result);
std::cout << " string = " << result << std::endl;
MMKV también admite acceso multiproceso . Los tutoriales completos se pueden encontrar aquí Tutorial de Windows.
Eficiente . MMKV usa mmap para mantener la memoria sincronizada con los archivos y protobuf para codificar/decodificar valores, aprovechando al máximo POSIX para lograr el mejor rendimiento.
Fácil de usar . Puede utilizar MMKV sobre la marcha. Todos los cambios se guardan inmediatamente, no se necesitan save
ni realizar llamadas sync
.
Pequeño .
Obteniendo el código fuente del repositorio de git:
git clone https://github.com/Tencent/MMKV.git
Edite su CMakeLists.txt
, agregue esas líneas:
add_subdirectory (mmkv/POSIX/src mmkv)
target_link_libraries (MyApp
mmkv)
Agregue #include "MMKV.h"
a su archivo fuente y listo.
Para otras opciones de instalación, consulte Configuración de POSIX.
Puede utilizar MMKV sobre la marcha. Todos los cambios se guardan inmediatamente, no se necesitan sync
ni llamadas save
.
Configure MMKV al iniciar la aplicación, diga en su main()
, agregue estas líneas:
# include " MMKV.h "
int main () {
std::string rootDir = getYourAppDocumentDir ();
MMKV::initializeMMKV (rootDir);
// ...
}
MMKV tiene una instancia global que se puede utilizar directamente:
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 Windows " , " string " );
std::string result;
mmkv-> getString ( " string " , result);
std::cout << " string = " << result << std::endl;
MMKV también admite acceso multiproceso . Los tutoriales completos se pueden encontrar aquí Tutorial POSIX.
Eficiente . MMKV usa mmap para mantener la memoria sincronizada con el archivo y protobuf para codificar/decodificar valores, aprovechando al máximo la plataforma nativa para lograr el mejor rendimiento.
Fácil de usar . Puede utilizar MMKV sobre la marcha. Todos los cambios se guardan inmediatamente, no se necesitan sync
ni llamadas flush
.
Pequeño .
ohpm install @tencent/mmkv
Puede utilizar MMKV sobre la marcha. Todos los cambios se guardan inmediatamente, no se necesitan sync
ni llamadas apply
.
Configure MMKV al iniciar la aplicación, diga su función EntryAbility.onCreate()
, agregue estas líneas:
import { MMKV } from '@tencent/mmkv' ;
export default class EntryAbility extends UIAbility {
onCreate ( want : Want , launchParam : AbilityConstant . LaunchParam ) : void {
let appCtx = this . context . getApplicationContext ( ) ;
let mmkvRootDir = MMKV . initialize ( appCtx ) ;
console . info ( 'mmkv rootDir: ' , mmkvRootDir ) ;
……
}
MMKV tiene una instancia global que se puede usar directamente:
import { MMKV } from '@tencent/mmkv' ;
let mmkv = MMKV . defaultMMKV ( ) ;
mmkv . encodeBool ( 'bool' , true ) ;
console . info ( 'bool = ' , mmkv . decodeBool ( 'bool' ) ) ;
mmkv . encodeInt32 ( 'int32' , Math . pow ( 2 , 31 ) - 1 ) ;
console . info ( 'max int32 = ' , mmkv . decodeInt32 ( 'int32' ) ) ;
mmkv . encodeInt64 ( 'int' , BigInt ( 2 ** 63 ) - BigInt ( 1 ) ) ;
console . info ( 'max int64 = ' , mmkv . decodeInt64 ( 'int' ) ) ;
let str : string = 'Hello OpenHarmony from MMKV' ;
mmkv . encodeString ( 'string' , str ) ;
console . info ( 'string = ' , mmkv . decodeString ( 'string' ) ) ;
let arrayBuffer : ArrayBuffer = StringToArrayBuffer ( 'Hello OpenHarmony from MMKV with bytes' ) ;
mmkv . encodeBytes ( 'bytes' , arrayBuffer ) ;
let bytes = mmkv . decodeBytes ( 'bytes' ) ;
console . info ( 'bytes = ' , ArrayBufferToString ( bytes ) ) ;
Como puede ver, MMKV es bastante fácil de usar. Para obtener la documentación completa, consulte el tutorial de HarmonyOS NEXT.
MMKV se publica bajo la licencia BSD de 3 cláusulas. Para obtener más información, consulte LICENCIA.TXT.
Consulte CHANGELOG.md para obtener detalles sobre el historial de cambios.
Si está interesado en contribuir, consulte CONTRIBUTING.md y únase también a nuestro Plan Tencent OpenSource.
Para dar claridad sobre lo que se espera de nuestros miembros, MMKV ha adoptado el código de conducta definido por el Contributor Covenant, que es ampliamente utilizado. Y creemos que articula bien nuestros valores. Para obtener más información, consulte el Código de conducta.
Consulte primero las preguntas frecuentes. Si hay alguna pregunta, no dude en crear problemas.
La privacidad del usuario se toma muy en serio: MMKV no obtiene, recopila ni carga ninguna información personal. Consulte las Reglas de protección de información personal del SDK de MMKV para obtener más detalles.