精易论坛

标题: TX开源库 - MMKV 易语言封装调用 [打印本页]

作者: 波哥野结衣    时间: 2021-1-17 21:31
标题: TX开源库 - MMKV 易语言封装调用
本帖最后由 波哥野结衣 于 2021-1-17 21:49 编辑

MMKV——腾讯开源库 基于 mmap 的高性能通用 key-value 组件


MMKV 是基于 mmap 内存映射的 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。从 2015 年中至今在微信上使用,其性能和稳定性经过了时间的验证。近期也已移植到 Android / macOS / Win32 / POSIX 平台,一并开源。


MMKV 源起


在微信客户端的日常运营中,时不时就会爆发特殊文字引起系统的 crash,参考文章,文章里面设计的技术方案是在关键代码前后进行计数器的加减,通过检查计数器的异常,来发现引起闪退的异常文字。在会话列表、会话界面等有大量 cell 的地方,希望新加的计时器不会影响滑动性能;另外这些计数器还要永久存储下来——因为闪退随时可能发生。这就需要一个性能非常高的通用 key-value 存储组件,我们考察了 SharedPreferences、NSUserDefaults、SQLite 等常见组件,发现都没能满足如此苛刻的性能要求。考虑到这个防 crash 方案最主要的诉求还是实时写入,而 mmap 内存映射文件刚好满足这种需求,我们尝试通过它来实现一套 key-value 组件。


MMKV 原理


内存准备

通过 mmap 内存映射文件,提供一段可供随时写入的内存块,App 只管往里面写数据,由操作系统负责将内存回写到文件,不必担心 crash 导致数据丢失。



更详细的设计原理参考 MMKV 原理


快速上手


MMKV 的使用非常简单,所有变更立马生效,无需调用 savesync

在 App 启动时初始化 MMKV,设定 MMKV 的根目录,例如在 main() 里:


C++

#include


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


问题 & 反馈


常见问题参见 FAQ,欢迎提 issues 提问反馈。


易语言 MMKV 模块


上面是腾讯关于MMKV的介绍,直接复制过来了。更多详情和用例请看GITHUB开源地址。

因为MMKV并不复杂,所以顺手就封装了一份给易语言调用,带了一个简单的使用方法。

封装的是最新的正式版 v1.2.7。




TX开源库MMKV - 易调用.zip (125.76 KB, 下载次数: 622)

解压密码回复可得
[hide=d365]qq805123809[/hide]



作者: 我翔飞    时间: 2021-1-17 21:32
蹲一楼,看看有啥用
作者: bdancerlc    时间: 2021-1-17 21:33
优秀优秀
作者: 商亨人和    时间: 2021-1-17 21:34
大佬就是大佬,作品屌炸天
作者: lao3    时间: 2021-1-17 21:36
6pppppppppppppppppppp
作者: xtavoxing    时间: 2021-1-17 21:36
支持开源~!感谢分享
作者: 醉酒成梦°    时间: 2021-1-17 21:38
学习了
作者: feimu2005    时间: 2021-1-17 21:44
支持开源~!感谢分享
作者: woxl    时间: 2021-1-17 21:44
66666
作者: 夜的静night    时间: 2021-1-17 21:44
学习下。。
作者: hhhql    时间: 2021-1-17 21:45
        支持开源~!感谢分享
作者: 流氓丶R    时间: 2021-1-17 21:48
一句话,牛逼。。。
作者: 2298174616    时间: 2021-1-17 21:54
1111111牛逼
作者: 闲心    时间: 2021-1-17 21:55
一句话,牛逼。。。
作者: 静默安装    时间: 2021-1-17 21:56
谢谢分享
作者: 1425113841    时间: 2021-1-17 21:56
感谢分享,很给力!~
作者: lianzuo123    时间: 2021-1-17 22:01
看一下什么内容
作者: 零度狀態    时间: 2021-1-17 22:01
谢谢分享     
作者: oycs429    时间: 2021-1-17 22:03
让 江小白 来看看帖子里藏了啥好东西~~~
作者: 倌人安好    时间: 2021-1-17 22:04
nb 看看能拿来搞啥项目了
作者: 685543    时间: 2021-1-17 22:06
学习学习学习
作者: hellohexiang    时间: 2021-1-17 22:07
支持开源~!感谢分享
作者: 山顶小雪球    时间: 2021-1-17 22:09
少走弯路,减少对相关技术的研究与摸索时间,从而加快了学习进度!
作者: 薛定谔的喵喵    时间: 2021-1-17 22:12
支持开源~!感谢分享
作者: knowledge    时间: 2021-1-17 22:17
支持开源~!感谢分享
作者: 咸鱼666    时间: 2021-1-17 22:20
新技能已get√
作者: 金胖子    时间: 2021-1-17 22:22

新技能已get√
作者: haoyunlai    时间: 2021-1-17 22:32
这个非常好,感谢分享
作者: leiwawa001    时间: 2021-1-17 22:33
谢谢分享。
作者: 乐天°    时间: 2021-1-17 22:37
新技能已get√
作者: CanK    时间: 2021-1-17 22:41
谢谢分享。
作者: pipiap    时间: 2021-1-17 22:45
支持开源~!感谢分享
作者: Onsxsen    时间: 2021-1-17 23:06
此处应该有鼓励~
作者: callng    时间: 2021-1-17 23:15
感谢大佬啊!
作者: 小浪xl    时间: 2021-1-17 23:16
TX开源库 - MMKV 易语言封装调用 [修改]
作者: 昨夜的雨    时间: 2021-1-17 23:19
感谢分享
作者: Amaya°    时间: 2021-1-17 23:23

作者: 7ian    时间: 2021-1-17 23:23
支持,看看
作者: chr8828    时间: 2021-1-17 23:26
支持,看看
作者: 蜗牛人生    时间: 2021-1-17 23:34
下载来看看
作者: huxian    时间: 2021-1-17 23:36
楼主这个昵称,隐隐约约感觉有点眼熟了?不知道在哪里见过了?
作者: sswockssw    时间: 2021-1-17 23:46
看看,好东西
作者: WeBox    时间: 2021-1-17 23:55
支持开源~!感谢分享
作者: ythrf    时间: 2021-1-18 00:10
啊啊啊啊啊啊啊啊啊
作者: gaoqing    时间: 2021-1-18 00:18
谢谢分享!
作者: xslyhk    时间: 2021-1-18 00:20
谢谢分享哦
作者: hmyroot    时间: 2021-1-18 00:57
感谢大佬分享,不过这个开源库的具体有什么用途呢?
作者: 寡人i    时间: 2021-1-18 01:21
谢谢分享来看看
作者: jing2020yi    时间: 2021-1-18 01:21
        支持开源~!感谢分享
作者: bianyuan456    时间: 2021-1-18 02:15
看看,这是哈希表么
作者: cjf19970621    时间: 2021-1-18 02:31
看看代码 b看看代码
作者: dashang    时间: 2021-1-18 03:44
感谢分享,很给力!~
作者: stoneltt    时间: 2021-1-18 05:51
感谢分享
作者: 不苦小和尚    时间: 2021-1-18 06:47
给力,支持多线程吧??
作者: 非常精易    时间: 2021-1-18 07:36
感谢分享
作者: 易风雪    时间: 2021-1-18 08:17
TX开源库 - MMKV 易语言封装调用
作者: acx525    时间: 2021-1-18 08:26
谢谢分享来看看
作者: shituo    时间: 2021-1-18 08:28
上面是TX关于MMKV的介绍,直接复制过来了。更多详情和用例请看GITHUB开源地址。 因为MMKV并不复杂,所以顺手就封装了一份给易语言调用,带了一个简单的使用方法。 封装的是最新的正式版 v1.2.7。
作者: 隔壁刘所长    时间: 2021-1-18 08:33
感谢楼主的分享,正好有用到。
作者: shituo    时间: 2021-1-18 08:35
E2EE 的存取键值表 也一样的
作者: jiang910615    时间: 2021-1-18 08:59
学习学习
作者: RES    时间: 2021-1-18 09:18

作者: zhishiguai    时间: 2021-1-18 09:20
66666
作者: 安哥    时间: 2021-1-18 09:34
学习学习学习学习
作者: 壮志豪情    时间: 2021-1-18 09:37
6666666666666
作者: shinid8210    时间: 2021-1-18 09:43
支持 感谢 厉害
作者: 面具,    时间: 2021-1-18 09:50

作者: vSpear    时间: 2021-1-18 09:57
感谢分享,很给力!~
作者: 天外孤鸿PLUS    时间: 2021-1-18 10:04
看一下了
作者: Delude    时间: 2021-1-18 10:14
这个真不错!
作者: sd3970566    时间: 2021-1-18 10:18
不就是读写配置差不多的功能嘛  还得增加程序大小
作者: webmaster999    时间: 2021-1-18 10:57
感谢分享,很给力!~
作者: 啊里过智能滑块    时间: 2021-1-18 11:09
学习学习
作者: 韦贝贝    时间: 2021-1-18 11:18
TX开源库 - MMKV 易语言封装调用
作者: 啊里过智能滑块    时间: 2021-1-18 11:21
这个用处大吗。小软件用cache存储不就够用了吗
作者: heize    时间: 2021-1-18 11:56
感谢分享,很不错
作者: BUG508    时间: 2021-1-18 12:00
来看看 学习学习
作者: 唯美主义    时间: 2021-1-18 12:06
不错,顶一下
作者: wjswzj0    时间: 2021-1-18 12:08
感谢分享,很给力!~
作者: 石榴熟了    时间: 2021-1-18 12:29
不错不错 看看
作者: longsui48    时间: 2021-1-18 12:45
感谢分享,很给力!~
作者: Fate    时间: 2021-1-18 13:30
感谢分享
作者: 兰克特里斯    时间: 2021-1-18 14:03
波哥永远都是那么棒
作者: 13266750    时间: 2021-1-18 14:05
波哥永远都是那么棒
作者: kgling    时间: 2021-1-18 14:15
感谢分享、、

作者: sunmoonstar    时间: 2021-1-18 14:41
新技能已get√
作者: 问心o    时间: 2021-1-18 14:41
感谢分享
作者: 蓝大侠    时间: 2021-1-18 14:48
感谢分享,很给力!~
作者: 痞子张    时间: 2021-1-18 14:53
有点意思 下来看看

作者: 夏末流年    时间: 2021-1-18 14:53
6666666!
作者: 痞子张    时间: 2021-1-18 15:00
模块就模块 虽然是调用DLL 模块还是封装了起来 怎么成源码分享了
作者: 宫廷程序猿    时间: 2021-1-18 15:01
稳定吗,什么都不问就问稳不稳
作者: 街边太多人与车    时间: 2021-1-18 15:08
易语言封装调用
作者: 网络注册络员    时间: 2021-1-18 15:30
看下密码
作者: zjchxj    时间: 2021-1-18 15:32
可以瞄瞄
作者: zjchxj    时间: 2021-1-18 15:35
唉。一个DLL。+一个EC,这能叫开源吗
作者: pipi9    时间: 2021-1-18 15:35
感谢发布原创作品,精易因你更精彩!
作者: SD1228    时间: 2021-1-18 15:56
感谢发布原创作品,精易因你更精彩!
作者: yu520    时间: 2021-1-18 16:06

可以瞄瞄
作者: 杂草    时间: 2021-1-18 16:18
好东西,收下看看。。。。




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4