Skip to content
/ MLNKV Public

MLNKV是跨平台(iOS、Android)、高性能的K-V存储组件

License

Notifications You must be signed in to change notification settings

momotech/MLNKV

Repository files navigation

MLNKV

License MIT

MLNKV是基于mmap实现的高性能、内存占用低、跨平台(支持iOS与Android)的Key-Value组件。

性能对比

测试机型:iPhone Xs 13.1.3 64G
img
img
img

内存占用对比:
img

用法

iOS 基本用法

pod 'MLNKV'


// init
MLNKV *mlnkv = [MLNKV defaultMLNKV];
// NSString *path = [MLNKVDEFAULTPATH stringByAppendingPathComponent:@".test"];
// MLNKV *mlnkv = [MLNKV mlnkvWithPath:path];

// set
    [mlnkv setKVString:@"value" forKey:@"key1"];
    [mlnkv setKVBool:YES forKey:@"key2"];
    [mlnkv setKVInt32:66666 forKey:@"key3"];
    [mlnkv setKVInt64:88888888 forKey:@"key4"];
    [mlnkv setKVFloat:66.666 forKey:@"key5"];
    [mlnkv setKVDouble:8888888.888 forKey:@"key6"];
    [mlnkv setKVObject:@{@"key":@"value"} forKey:@"key7"];
    [mlnkv setKVData:data forKey:@"key8"];
    
// get
    int value = [mlnkv getKVInt32ForKey:@"key3"];
    ...
    ...
    
// obj 自己实现序列化 or 使用NSKeyedArchiver
    [mlnkv setKVObject:obj forKey:@"key" archiveBlock:^NSData * _Nullable(id  _Nonnull obj) {
       // ...archive
    }];
    [mlnkv getKVObjectForKey:@"key" ofClass:clz unarchiveBlock:^id _Nullable(NSData * _Nonnull data) {
       // ...unarchive
    }];

Android 基本用法

maven {url "https://dl.bintray.com/sunzt8801/MLNKV"}
implementation "com.mlnkv:mlnkv:0.0.4"


// must call this in MainActivity
 MLNKV.initializeBasePath(this);

// init
MLNKV mlnkv = MLNKV.defaultMLNKV();
// String path = MLNKV.basPath() + "/.test";
// MLNKV mlnkv = new MLNKV(path);

// set 
    mlnkv.setBool("key1", true);
    mlnkv.setInt32("key2", 1);
    mlnkv.setInt64("key3", 88888888);
    mlnkv.setDouble("key4", 8888.888);
    mlnkv.setString("key5", "value");
    mlnkv.setBytes("key6", bytes);

// get 
    boolean value = mlnkv.getBool("key1");
    ...
    ...

// obj 使用java Serializable
    mlnkv.setObject("key", obj);
    mlnkv.getObject("key", clz);

许可证

MLNKV 使用 MIT 许可证,详情见 LICENSE 文件。