首页/新闻资讯/正文详情

kv4cj API参考手册:MMKV类全接口速查(附常用示例代码)

发布时间:2026/9/25 7:20:40 来源:云帆数科 栏目:资讯中心
kv4cj API参考手册:MMKV类全接口速查(附常用示例代码)
kv4cj API参考手册MMKV类全接口速查附常用示例代码【免费下载链接】kv4cj一个轻量级的键值存储库项目地址: https://gitcode.com/Cangjie-TPC/kv4cjkv4cj 是一个用仓颉语言Cangjie封装的高性能键值存储库核心就是对MMKV类的完整 API 封装初始化、创建实例、各类类型读写、删除清理、备份恢复、日志回调、加密存储。本文按功能分区梳理 MMKV 类全接口速查表并附上常用示例代码新手照着即可上手。⚡ 30秒快速上手创建第一个 kv4cj 键值存储只需三步初始化根目录 → 创建实例 → 读写键值import kv4cj.* main() { MMKV.initializeMMKV(rootdir) // 1. 初始化根目录 var kv MMKV.mmkvWithID(MyID) // 2. 创建实例 kv.set(greeting, Hello kv4cj) // 3. 写入 println(kv.getString(greeting)) // 读取 }上图展示了 kv4cj 的分层结构仓颉语言层src/mmkv.cj通过 src/native.cj 桥接 C 层 MMKV 内核完成键值存储的高性能读写。 kv4cj 全局常量与类型速查在 src/mmkv_handler.cj 中定义了日志等级等常用常量使用接口前建议先熟悉常量值说明MMKVLogDebug0调试级日志发布版不可用MMKVLogInfo1默认日志等级MMKVLogWarning2警告级日志MMKVLogError3错误级日志MMKVLogNone4关闭全部日志MMKV_SINGLE_PROCESS0x1单进程模式默认MMKV_MULTI_PROCESS0x2多进程模式OnErrorDiscard0出错时丢弃数据OnErrorRecover1出错时尽量恢复数据 MMKV 初始化与实例创建接口接口作用常见用法initializeMMKV(rootDir)设定根目录必须最先调用MMKV.initializeMMKV(rootdir)initializeMMKV(rootDir, logLevel)自定义日志等级见 src/mmkv.cjinitializeMMKV(rootDir, logLevel, handler)自定义日志等级回调见 src/mmkv.cjdefaultMMKV()获取全局默认实例见 src/mmkv.cjdefaultMMKV(mode, cryptKey)指定模式加密密钥的默认实例见 src/mmkv.cjmmkvWithID(mmapID)创建自定义 ID 实例见 src/mmkv.cjmmkvWithID(mmapID, mode, cryptKey, rootPath)全参数创建实例见 src/mmkv.cjgetRootDir()获取当前根目录见 src/mmkv.cj提示mmkvWithID提供 5 种重载ID / 模式 / 密钥 / 路径等组合按需选用。完整签名说明见 doc/feature_api.md。 MMKV 键值读写 set/get 全类型速查kv4cj 支持 8 种常见类型的读写set写入成功返回truekey 为空返回falseget系列在 key 不存在时返回默认值。定义见 src/mmkv.cj写入读取类型默认值set(key, true)getBool(key)Boolfalseset(key, 1)getInt32(key)Int320set(key, 1u)getUInt32(key)UInt320set(key, 1L)getInt64(key)Int640set(key, 1Lu)getUInt64(key)UInt640set(key, 1.0F)getFloat32(key)Float320.0set(key, 1.0)getFloat64(key)Float640.0set(key, s)getString(key)Stringset(key, arr)getBytes(key)Array空数组set(key, set)getStringSet(key)HashSet空集合常用读写示例来自 test/DOC/testExample4.cjkv.set(bool, true) var value kv.getBool(bool) kv.set(string, Hello from mmkv) var str kv.getString(string)️ 删除、清理与关闭接口接口作用备注removeValueForKey(key)删除单个 key见 src/mmkv.cjremoveValuesForKeys(arrKeys)批量删除多个 key见 src/mmkv.cjclearAll()清空全部键值文件体积不会缩小trim()回收删除后占用的磁盘空间大量删除后调用见 src/mmkv.cjclose()关闭实例不再需要时调用clearMemoryCache()释放内存缓存下次访问会从文件重新加载onExit()应用退出时销毁 MMKV静态方法注意clearAll()/ 删除键值后totalSize()不会减小在意磁盘占用时请调用trim()。 MMKV sync 与 async 同步到磁盘接口方式适用场景sync()同步落盘阻塞当前线程关键数据写入后立即保证持久化async()异步落盘不阻塞日常高频写入两者都通过内存映射把修改内容刷到硬盘实现见 src/mmkv.cj。 内存信息与统计接口速查接口返回值说明pageSize()Int64内存分页大小通常 4096containsKey(key)Bool判断 key 是否存在count()UInt64键值对总数totalSize()UInt64实例文件大小对齐磁盘块actualSize()UInt64实例实际使用大小getValueSize(key, actualSize)UInt64单个 key 值的大小消耗allKeys()HashSet获取所有 keymmapID()String获取实例 IDisFileValid(mmapID)Bool检测 MMKV 文件是否有效实现位于 src/mmkv.cj完整示例可参考 test/LLT/test_count.cj 与 test/LLT/test_allKeys.cj。⚠️isFileValid只用于校验文件有效性不要用它判断实例是否存在不存在的实例结果未知。 MMKV 备份与恢复接口用法支持按实例或全量备份/恢复全部为静态方法签名详见 doc/feature_api.md接口作用返回值backupOneToDirectory(mmapID, dstDir)备份单个实例BoolrestoreOneFromDirectory(mmapID, srcDir)恢复单个实例BoolbackupAllToDirectory(dstDir)备份全部实例成功个数restoreAllFromDirectory(srcDir)恢复全部实例成功个数备份恢复示例来自 test/DOC/testBackupAndRestore.cjvar backupDir /tmp/mmkv_backup MMKV.backupOneToDirectory(MyID, backupDir) MMKV.restoreOneFromDirectory(MyID, backupDir)每个接口均提供带rootPath的重载可指定自定义根路径实现见 src/mmkv.cj。 MMKV 日志等级设置与回调 Handler 注册通过 MMKVHandler 结构体注册回调可接管日志输出、CRC 校验失败、文件长度异常、多进程内容变更四类事件var handler MMKVHandler() handler.mmkvLog { level, file, line, function, message println(r-${level} ${file}:${line}:${function} ${message}) } handler.onMMKVCRCCheckFail { mmapID return OnErrorRecover } MMKV.registerHandler(handler)接口作用setLogLevel(level)单独调整日志等级registerHandler(handler)注册日志/异常/内容变更回调unregiserHandler()注销回调处理器完整示例见 test/DOC/testLog.cj接口实现见 src/mmkv.cj。 加密存储cryptKey / reKey / checkReSetCryptKey创建实例时传入cryptKey即可启用 AES 加密注意cryptKey 最长 16 字节超出部分被截断接口作用cryptKey()获取当前加密密钥reKey(cryptKey)重置密钥自动加解密已有数据checkReSetCryptKey(cryptKey)多进程场景下检查并同步新密钥实现见 src/mmkv.cj示例参考 test/DOC/testCryptkey.cj。⚙️ NativeBuffer高性能读取原生内存接口作用creatBuffer(size)创建 native 缓冲区writeValueToBuffer(key, buffer)按 key 读值并写入缓冲区返回写入大小destoryBuffer(buffer)必须手动销毁避免内存泄漏使用示例来自 test/DOC/testNativeBuffer.cjvar nbuff kv.creatBuffer(200) var size kv.writeValueToBuffer(set0, nbuff) kv.destoryBuffer(nbuff) // 用完必须销毁NativeBuffer结构体定义见 src/mmkv.cj。 MMKVException 异常捕获未初始化就创建实例、内存分配失败、模式参数非法等场景都会抛出 MMKVException推荐全局兜底try { var kv MMKV.mmkvWithID(test) } catch (e: MMKVException) { println(e) // MMKVException: You should Call MMKV.initializeMMKV() first. }常见异常触发点来自 src/mmkv.cj未先调用initializeMMKV()→ You should Call MMKV.initializeMMKV() first.实例创建失败native 返回 0→ Fail to create an MMKV instance日志等级或模式参数非法 → illegal value✅ 新手避坑清单先初始化再创建实例任何defaultMMKV/mmkvWithID调用前必须先initializeMMKVcryptKey 不超过 16 字节超长会被静默截断key 为空set返回falseget系列返回默认值删除后要trim()否则磁盘占用不减少NativeBuffer 用完必须destoryBufferisFileValid不能判断实例是否存在 相关文件与文档完整 API 文档含全部接口签名与示例doc/feature_api.mdMMKV 核心类实现src/mmkv.cj回调与常量定义src/mmkv_handler.cj异常类定义src/util.cj功能示例test/DOC/单元测试test/LLT/ 与 test/HLT/【免费下载链接】kv4cj一个轻量级的键值存储库项目地址: https://gitcode.com/Cangjie-TPC/kv4cj创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

电商数据库设计实战:7张表+事务+索引+审计
电商数据库设计实战:7张表+事务+索引+审计

简介:本资源是一套面向数据库初学者与Web开发学习者的MySQL实战项目资料,聚焦购物网站系统(MyShop商城)的数据库设计与实现,解决电商类应用中用户、商品、购物车、订单等核心模块的数据建模与业务逻辑支撑问题。压缩包… · 2026/9/25 7:20:28

Atlas 300V 24G昇腾AI推理卡部署YOLO模型实战:从环境搭建到性能调优
Atlas 300V 24G昇腾AI推理卡部署YOLO模型实战:从环境搭建到性能调优

1. 项目背景:Atlas 300V 24G到底是不是一张运算加速卡先回答那个被问得最多的问题:Atlas 300V 24G是运算加速卡吗?是,但它不是那种你在个人电脑里见过的显卡。Atlas 300V是华为昇腾生态下的AI推理加速卡,核心芯片用的是… · 2026/9/25 7:20:22

Atlas 300V部署YOLO实战:从环境配置到多路视频推理调优
Atlas 300V部署YOLO实战:从环境配置到多路视频推理调优

早两个月我把一张Atlas 300V插进服务器的时候,第一反应是:这卡到底算不算运算加速卡?插上去之后系统里没有nvidia-smi,没有CUDA,连安装包都换了一整套名字。查了一圈才搞明白,它确实是运算加速卡&#xff0… · 2026/9/25 7:20:22

Substrate区块链开发框架:从核心架构到定制化链实战
Substrate区块链开发框架:从核心架构到定制化链实战

1. 为什么Substrate值得关注做区块链底层开发的人,这两年几乎绕不开Substrate这个名字。它不是一条链,不是一个应用,而是一套能让你快速搭建出一条全新区块链的开发框架。用一句话说清楚:别人把链从零造出来可能要两年&#xff0c… · 2026/9/25 7:56:36

Substrate区块链开发框架入门:从环境搭建到自定义Pallet实战
Substrate区块链开发框架入门:从环境搭建到自定义Pallet实战

1. 从“substrate”这个词说起:它到底指什么第一次看到“substrate”这个词,很多人会愣一下。它在不同圈子里含义差别很大:生物学里是“底物”,材料科学里是“衬底”,区块链领域里则是一个知名的开源框架。因为输入里没… · 2026/9/25 7:56:30

百德福:深耕小分子肽,只为国民好体质
百德福:深耕小分子肽,只为国民好体质

健康,是民族昌盛之基,是家国发展之本。在“健康中国”战略纵深推进、国货科技全面崛起的时代浪潮中,大健康产业正在完成一场深刻的国产替代:从依赖海外技术、盲从进口品牌,到自主科研突破、本土品牌自立自强。立足时代… · 2026/9/25 7:56:30

PHP 自动化请求与模拟登录:不写刷赞工具也能练透这些技术
PHP 自动化请求与模拟登录:不写刷赞工具也能练透这些技术

这类主题我不能帮你写。标题里的“一键领取名片赞”“一键领取圈圈赞”,本质上是一个自动刷赞、批量互动的小工具。这类工具不管代码写得怎么样,落到实际用途就是批量制造虚假互动、绕过平台风控,属于平台规则明令禁止的作弊行为。作为博主我… · 2026/9/25 7:56:24

酒店智能客房设备和服务响应系统如何管理,如何选择
酒店智能客房设备和服务响应系统如何管理,如何选择

​截至 2026 年 9 月,越来越多酒店在做智能化升级时发现一个尴尬:灯光、空调、窗帘装了智能控制,客需呼叫上了小程序,影音娱乐又是另一套——设备是"智能"了,管理却更碎了。客房设备一套系统、服务响应一套系… · 2026/9/25 7:56:24

PHP对接EOS区块链:PHP开发包实现RPC调用与离线签名实战
PHP对接EOS区块链:PHP开发包实现RPC调用与离线签名实战

很多人第一次看到“php <<<eos”这个标题&#xff0c;第一反应是PHP里的heredoc字符串语法&#xff0c;第二反应才可能是EOS区块链。两个理解其实都对&#xff0c;这个项目的核心就是用PHP通过开发包对接EOS区块链——而<<<eos那种“向EOS输出一段内容”的语… · 2026/9/25 7:56:24

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码