网站拒绝被百度收录桂林人论坛新闻

张小明 2026/3/2 21:46:45
网站拒绝被百度收录,桂林人论坛新闻,网站开发交易,做爰 网站鸿蒙学习实战之路-数据持久化键值型数据库KV-Store全攻略 最近好多朋友问我#xff1a;“西兰花啊#xff0c;鸿蒙应用里除了Preferences#xff0c;还有什么靠谱的存储方式吗#xff1f;我要存的东西有点多#xff0c;但又不想用复杂的关系型数据库#xff0c;咋整“西兰花啊鸿蒙应用里除了Preferences还有什么靠谱的存储方式吗我要存的东西有点多但又不想用复杂的关系型数据库咋整” 害这问题可问对人了今天这篇我就手把手带你搞定鸿蒙里的键值型数据库(KV-Store)从基础概念到实战代码全程用大白话讲明白一、什么是应用数据持久化应用数据持久化是指应用将内存中的数据通过文件或数据库的形式保存到设备上。内存中的数据形态通常是任意的数据结构或数据对象存储介质上的数据形态可能是文本、数据库、二进制文件等。HarmonyOS标准系统支持典型的存储数据形态包括用户首选项Preferences用于保存应用的配置信息。数据以文本形式保存在设备中应用使用时会将文本中的数据全量加载到内存中访问速度快、效率高但不适合需要存储大量数据的场景。键值型数据库KV-Store一种非关系型数据库其数据以键值对的形式进行组织、索引和存储其中键作为唯一标识符。适合数据关系和业务关系较少的业务数据存储同时因其在分布式场景中降低了解决数据库版本兼容问题的复杂度和数据同步过程中冲突解决的复杂度而被广泛使用。相比于关系型数据库更容易做到跨设备跨版本兼容。关系型数据库RelationalStore一种关系型数据库以行和列的形式存储数据广泛用于关系型数据处理支持增、删、改、查等接口开发者也可以运行自定义SQL语句满足复杂业务场景。此外提供了向量数据库能力支持向量数据间的相似度计算适用于推荐场景、相似图像检索以及自然语言处理等。今天咱们重点聊聊键值型数据库KV-Store这玩意儿就像咱们家里的储物盒每个盒子都有个标签键里面装着对应的东西值找起来方便又高效二、KV-Store适合存什么KV-Store特别适合存储那些没有复杂关系的数据比如商品名称及对应价格员工工号及出勤状态简单结构的配置信息用户的收藏列表其他键值对应的数据就像咱们厨房里的调料瓶每个瓶子键都装着不同的调料值一目了然拿取方便三、注意事项要牢记使用KV-Store时有一些家规得遵守不然容易出问题限制项具体说明设备协同数据库Key长度≤896 ByteValue长度4 MB单版本数据库Key长度≤1 KBValue长度4 MB并发限制每个应用最多同时打开16个键值型分布式数据库事件回调不允许进行阻塞操作如修改UI组件西兰花警告别存太大的东西每个值的大小不能超过4MB就像储物盒不能装超过它容量的东西一样四、核心接口速览KV-Store提供了一套简单好用的接口咱们来快速认识一下接口名称描述createKVManager创建KVManager实例用来管理数据库对象就像创建储物间管理员getKVStore创建并获取指定类型的KVStore数据库就像在储物间里开辟一个新的储物区put添加键值对到数据库就像把东西放进标好标签的盒子里get获取指定键的值就像根据标签找到对应的盒子并取出东西delete删除指定键值的数据就像扔掉不需要的东西closeKVStore关闭指定数据库就像用完储物区后锁上门deleteKVStore删除指定数据库就像拆掉整个储物区所有异步接口都支持callback和Promise两种形式咱们可以根据自己的习惯选择五、实战代码走起来光说不练假把式咱们直接上代码1. 创建KVManager实例首先得创建一个KVManager实例它就像是咱们的储物间管理员负责管理所有的KVStore数据库。Stage模型import{distributedKVStore}fromkit.ArkData;import{UIAbility}fromkit.AbilityKit;import{BusinessError}fromkit.BasicServicesKit;// 定义KVManager实例和相关配置letkvManager:distributedKVStore.KVManager|undefinedundefined;letappId:stringcom.example.datamanagertest;// 你的应用IDletstoreId:stringmyKVStore;// 数据库IDexportdefaultclassEntryAbilityextendsUIAbility{onCreate(){// 配置KVManagerconstkvManagerConfig:distributedKVStore.KVManagerConfig{context:this.context,// 应用上下文bundleName:appId,// 应用包名};try{// 创建KVManager实例kvManagerdistributedKVStore.createKVManager(kvManagerConfig);console.info(成功创建KVManager实例);}catch(e){leterroreasBusinessError;console.error(创建KVManager失败:${error.code},${error.message});}}}FA模型import{distributedKVStore}fromkit.ArkData;import{featureAbility}fromkit.AbilityKit;import{BusinessError}fromkit.BasicServicesKit;// 定义KVManager实例和相关配置letkvManager:distributedKVStore.KVManager|undefinedundefined;letappId:stringcom.example.datamanagertest;// 你的应用IDletstoreId:stringmyKVStore;// 数据库IDletcontextfeatureAbility.getContext();// 获取上下文// 配置KVManagerconstkvManagerConfig:distributedKVStore.KVManagerConfig{context:context,bundleName:appId,};try{// 创建KVManager实例kvManagerdistributedKVStore.createKVManager(kvManagerConfig);console.info(成功创建KVManager实例);}catch(e){leterroreasBusinessError;console.error(创建KVManager失败:${error.code},${error.message});}2. 获取KVStore数据库有了管理员接下来咱们需要创建一个具体的KVStore数据库就像在储物间里开辟一个专门的储物区。letkvStore:distributedKVStore.SingleKVStore|undefinedundefined;try{// 创建Schema可选用于定义数据结构// 定义id字段letchild1newdistributedKVStore.FieldNode(id);child1.typedistributedKVStore.ValueType.INTEGER;// 整数类型child1.nullablefalse;// 不能为空child1.default1;// 默认值// 定义name字段letchild2newdistributedKVStore.FieldNode(name);child2.typedistributedKVStore.ValueType.STRING;// 字符串类型child2.nullablefalse;// 不能为空child2.defaultzhangsan;// 默认值// 创建Schema实例letschemanewdistributedKVStore.Schema();schema.root.appendChild(child1);// 添加id字段schema.root.appendChild(child2);// 添加name字段schema.indexes[$.id,$.name];// 创建索引提高查询效率schema.mode1;// 1表示STRICT模式0表示COMPATIBLE模式schema.skip0;// 配置KVStoreconstoptions:distributedKVStore.Options{createIfMissing:true,// 如果不存在则创建encrypt:false,// 不加密backup:false,// 不备份autoSync:false,// 不自动同步kvStoreType:distributedKVStore.KVStoreType.SINGLE_VERSION,// 单版本数据库// kvStoreType: distributedKVStore.KVStoreType.DEVICE_COLLABORATION, // 多设备协同数据库schema:schema,// 使用上面定义的SchemasecurityLevel:distributedKVStore.SecurityLevel.S3,// 安全级别};// 获取KVStore实例kvManager.getKVStoredistributedKVStore.SingleKVStore(storeId,options,(err,store){if(err){console.error(获取KVStore失败:${err.code},${err.message});return;}console.info(成功获取KVStore实例);kvStorestore;});}catch(e){leterroreasBusinessError;console.error(发生意外错误:${error.code},${error.message});}西兰花小贴士Schema是可选的但使用它可以让你的数据结构更规范查询效率更高哦3. 订阅数据变化想实时知道数据库里的数据有没有变化可以订阅数据变更事件try{kvStore.on(dataChange,distributedKVStore.SubscribeType.SUBSCRIBE_TYPE_ALL,(data){console.info(数据发生变化:${data});// 注意这里不能做阻塞操作比如修改UI组件});}catch(e){leterroreasBusinessError;console.error(订阅数据变化失败:${error.code},${error.message});}4. 插入数据现在可以往KVStore里存数据了就像把东西放进标好标签的盒子里// 定义测试数据constKEY_TEST_STRING_ELEMENTkey_test_string;constVALUE_TEST_STRING_ELEMENT{id:0, name:lisi};try{// 插入数据kvStore.put(KEY_TEST_STRING_ELEMENT,VALUE_TEST_STRING_ELEMENT,(err){if(err!undefined){console.error(插入数据失败:${err.code},${err.message});return;}console.info(成功插入数据);});}catch(e){leterroreasBusinessError;console.error(发生意外错误:${error.code},${error.message});}5. 查询数据存进去的数据得能读出来才行就像根据标签找到对应的盒子并取出东西try{// 查询数据kvStore.get(KEY_TEST_STRING_ELEMENT,(err,data){if(err!undefined){console.error(查询数据失败:${err.code},${err.message});return;}console.info(成功查询数据:${data});});}catch(e){leterroreasBusinessError;console.error(查询数据失败:${error.code},${error.message});}6. 删除数据不需要的数据可以删掉就像扔掉不需要的东西try{// 删除数据kvStore.delete(KEY_TEST_STRING_ELEMENT,(err){if(err!undefined){console.error(删除数据失败:${err.code},${err.message});return;}console.info(成功删除数据);});}catch(e){leterroreasBusinessError;console.error(发生意外错误:${error.code},${error.message});}7. 关闭数据库用完数据库后记得关闭它就像用完储物区后锁上门try{// 关闭数据库kvManager.closeKVStore(appId,storeId,(err:BusinessError){if(err){console.error(关闭数据库失败:${err.code},${err.message});return;}console.info(成功关闭数据库);kvStoreundefined;// 清空实例引用});}catch(e){leterroreasBusinessError;console.error(发生意外错误:${error.code},${error.message});}8. 删除数据库如果不想用某个数据库了可以删掉它就像拆掉整个储物区try{// 删除数据库kvManager.deleteKVStore(appId,storeId,(err:BusinessError){if(err){console.error(删除数据库失败:${err.code},${err.message});return;}console.info(成功删除数据库);kvStoreundefined;// 清空实例引用});}catch(e){leterroreasBusinessError;console.error(发生意外错误:${error.code},${error.message});}六、总结一下今天咱们一起学习了鸿蒙里的键值型数据库(KV-Store)从基础概念到实战代码相信你已经掌握了KV-Store的适用场景适合存储无复杂关系模型的数据KV-Store的约束限制键值大小、并发数量等KV-Store的核心接口创建、获取、增删改查等操作实战代码从创建实例到数据操作的完整流程西兰花小贴士如果你的数据量不大结构简单KV-Store是个不错的选择如果需要处理复杂的关系型数据那还是得用关系型数据库(RelationalStore) 预告《只会KV-StoreHarmonyOS关系型数据库RelationalStore全攻略》 推荐资料官方文档通过键值型数据库实现数据持久化完整示例实现键值型数据库读写功能我是盐焗西兰花不教理论只给你能跑的代码和避坑指南。下期见
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

国外著名网站建设公司二维码生成器怎么弄

摘要 针对传统台灯手动开关、亮度固定导致的能源浪费与使用不便问题,设计了一款基于STM32F103单片机的智能感应台灯。该台灯融合人体感应、环境光检测与智能控制技术,可实现人来灯亮、人走灯灭、亮度自适应调节及定时关闭功能。测试表明,系统…

张小明 2026/1/3 21:04:51 网站建设

wordpress 站点群学动漫制作很烧钱吗

博主介绍:java高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了多年的设计程序开发,开发过上千套设计程序,没有什么华丽的语言,只有实…

张小明 2026/1/10 20:11:00 网站建设

网站怎么做静态化音乐网站设计模板

第一章:碳中和监管风暴下的企业合规挑战在全球气候治理加速推进的背景下,碳中和目标已从政策倡议转变为强制性监管要求。各国政府陆续出台碳排放报告、碳足迹追溯与减排义务的法律法规,企业面临前所未有的合规压力。未能满足披露标准或超额排…

张小明 2026/1/10 15:43:32 网站建设

ps做网站浏览器预览百度蜘蛛

Excalidraw离线版部署:无网络环境照样高效协作 在一次军工系统的架构评审会上,团队围坐一圈,白板上潦草地画着数据流与模块交互。有人提议:“不如用Excalidraw来梳理?”话音刚落,有人苦笑:“内…

张小明 2026/2/21 15:28:41 网站建设

祥云县网站医疗网站建设咨询

在当今复杂的游戏构建工具领域中,有一款工具正悄然改变着玩家规划角色的方式。无论你是新手玩家还是资深游戏爱好者,这款工具都能为你的角色规划带来全新的体验。 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址:…

张小明 2026/1/10 20:46:41 网站建设

一个服务器怎么做两个网站西安市做网站的

第一章:Open-AutoGLM落地的背景与演进路径随着大模型技术的快速发展,通用语言模型在理解、生成和推理能力上取得了显著突破。然而,如何将这些能力高效迁移至垂直领域并实现自动化任务执行,成为产业界关注的核心问题。Open-AutoGLM…

张小明 2026/1/11 5:52:30 网站建设