使用原因:Android SharedPreferences多线程取值失效,有位熊兄弟推荐使用香飘飘MMKV存储利器,不香赔钱。然而我抱着赔钱的心态玩了一下,真香!!
MMKV优势
- 使用零拷贝技术之一
mmap
内存映射的key-value组件,用户空间可以共享内核空间的数据,减少内核空间到用户空间的拷贝次数 - 采用性能最佳的
protobuf
协议 - 稳定,最先使用在iOS中,后续Android也可以使用这真香利器
-
性能比NSUserDefaults香多了
真香性能
那就开始玩耍吧~~~
通过CocoaPods
安装
- Podfile文件,添加 pod 'MMKV'
- 头文件添加
#import <MMKV/MMKV.h>
初始化
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[MMKV initializeMMKV:nil];
return YES;
}
真香使用
// 创建默认实例
MMKV *mmkv = [MMKV defaultMMKV];
// 创建自定义的实例
MMKV *mmkv2 = [MMKV mmkvWithID:@"test"];
// set 布尔值
[mmkv setBool:YES forKey:@"bool"];
// get 布尔值
[mmkv getBoolForKey:@"bool"];
// set值 32位整形
[mmkv setInt32:-1024 forKey:@"int32"];
// get值 32位整形
[mmkv getInt32ForKey:@"int32"];
// set值 32位无符号整形
[mmkv setUInt32:std::numeric_limits<uint32_t>::max() forKey:@"uint32"];
// get值 32位无符号整形
[mmkv getUInt32ForKey:@"uint32"];
// set值 64位整形
[mmkv setInt64:std::numeric_limits<int64_t>::min() forKey:@"int64"];
// get值 64位整形
[mmkv getInt64ForKey:@"int64"];
// set值 64位无符号整形
[mmkv setUInt64:std::numeric_limits<uint64_t>::max() forKey:@"uint64"];
// get值 64位无符号整形
[mmkv getInt64ForKey:@"uint64"];
// set值 字符串
[mmkv setString:@"hello, mmkv" forKey:@"string"];
// get值 字符串
[mmkv getStringForKey:@"string"];
// set值 float
[mmkv setFloat:30.0 forKey:@"float"];
// get值 float
[mmkv getFloatForKey:@"float"];
// set值 double
[mmkv setDouble:std::numeric_limits<double>::max() forKey:@"double"];
// get值 double
[mmkv getDoubleForKey:@"double"];
// set值 object
[mmkv setObject:nil forKey:@"string"];
// get值 object
[mmkv getObjectOfClass:NSString.class forKey:@"string"];
// set值 date
[mmkv setDate:[NSDate date] forKey:@"date"];
// get值 date
[mmkv getDateForKey:@"date"];
// 获取所有keys
[mmkv allKeys];
// 获取总数
mmkv.totalSize;
// 是否存在key
[mmkv containsKey:@"string"];
// 删除单个
[mmkv removeValueForKey:@"test"];
// 删除多个
[mmkv removeValuesForKeys:@[@"test1", @"test2"]];
// 删除缓存,不删除磁盘文件
[mmkv clearMemoryCache];
// 删除所有键值,删除磁盘文件
[mmkv close];
Android 篇请跳转此地址:https://www.jianshu.com/p/cb2016566504