鸿蒙三方库 | harmony-utils之CacheUtil缓存管理详解
📅 2026/7/24 8:08:40
👁️ 次浏览
前言缓存是提升应用性能的重要手段合理的缓存策略可以减少网络请求和重复计算。pura/harmony-utils的CacheUtil封装了内存缓存管理方法支持过期时间和容量控制。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解帮助开发者快速掌握并应用到实际项目中。一、CacheUtil核心APICacheUtil提供了以下缓存管理方法方法说明返回类型使用场景put(key, value, expireMs)写入缓存void数据缓存get(key)读取缓存Object缓存查询remove(key)删除缓存void缓存清理clear()清空缓存void全量清理size()获取缓存数量number容量监控1.1 核心特性简洁易用封装复杂API为一行调用降低使用门槛类型安全完整的TypeScript类型定义编译期即可发现错误异常处理内置异常捕获机制避免运行时崩溃过期控制支持设置缓存过期时间1.2 缓存策略对照策略说明适用场景定时过期设置过期时间API响应缓存手动清理调用clear()数据刷新容量控制监控size()内存管理二、完整使用步骤2.1 安装依赖ohpminstallpura/harmony-utils2.2 写入缓存import{CacheUtil}frompura/harmony-utils;Button(写入缓存).width(100%).onClick((){try{CacheUtil.put(user_info,{name:张三,age:25},60000);this.result缓存写入成功 ✅\n有效期: 60秒;}catch(e){this.result异常: e;}})2.3 读取缓存Button(读取缓存).width(100%).onClick((){try{letvalueCacheUtil.get(user_info);this.resultvalue?缓存命中 ✅\n${JSON.stringify(value)}:缓存未命中 ❌\n已过期或不存在;}catch(e){this.result异常: e;}})2.4 清空缓存Button(清空缓存).width(100%).onClick((){try{CacheUtil.clear();this.result缓存已清空 ;}catch(e){this.result异常: e;}})三、完整页面示例import{CacheUtil}frompura/harmony-utils;EntryComponentstruct CacheDemo{Stateresult:string;build(){Column({space:12}){Button(写入缓存).width(100%).onClick((){CacheUtil.put(test,Hello Cache!,30000);this.result写入成功数量:${CacheUtil.size()};});Button(读取缓存).width(100%).onClick((){letvCacheUtil.get(test);this.resultv?命中:${v}:未命中;});Text(this.result).fontSize(14).fontColor(#333333)}.padding(16)}}四、进阶用法4.1 API响应缓存import{CacheUtil}frompura/harmony-utils;asyncfunctionfetchWithCache(url:string,expireMs:number60000):PromiseObject{letcachedCacheUtil.get(url);if(cached)returncached;letresponseawaitfetch(url);letdataawaitresponse.json();CacheUtil.put(url,data,expireMs);returndata;}4.2 缓存预热functionwarmUpCache():void{CacheUtil.put(config,loadConfig(),300000);CacheUtil.put(dictionary,loadDictionary(),600000);}五、注意事项内存缓存CacheUtil为内存缓存应用退出后数据丢失过期时间过期时间单位为毫秒容量控制注意监控缓存数量避免内存溢出初始化依赖使用前需确保AppUtil.init()已调用线程安全多线程访问需注意并发安全六、常见问题Q1: 缓存数据在应用重启后还在吗不在CacheUtil是内存缓存应用退出后数据丢失。持久化请使用Preferences或数据库。Q2: 如何设置永不过期的缓存不传expireMs参数或设置为0缓存将不会自动过期。Q3: 缓存占用内存过大怎么办定期调用clear()清理或使用LRUCacheUtil替代。Q4: get()返回null是什么原因可能是缓存已过期、已被删除、或从未写入。总结CacheUtil的缓存管理方法为应用性能优化提供了便捷支持。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。合理使用缓存可以显著提升应用响应速度。本文基于pura/harmony-utils工具库更多功能请参考官方文档与后续系列文章。
1. 项目背景与核心价值在工业生产和日常生活场景中,早期烟雾检测一直是安全防护的重点难点。传统烟雾传感器依赖物理接触式检测,存在响应延迟、安装位置受限等固有缺陷。我们团队开发的这套AI视觉识别系统,通过普通监控摄像头即可实现非接触式…
📅 2026/7/24 8:08:40
1. 为什么2026年的AI Agent值得现在开始学习? 三年前我接手第一个企业级AI Agent项目时,光调试对话流程就花了两个月。现在回头看,当时的开发方式就像用算盘做数据分析——工具原始、效率低下。但到2026年,这个领域将迎来三个关键…
📅 2026/7/24 8:08:40
引言
公务员考试备考进入中后期,不少考生会卡在某个阶段难以推进:行测资料分析速度提不上去、申论大作文找不到立意、判断推理图形题反复出错。这种"学了练了但分数不动"的状态,通常被称为备考瓶颈。瓶颈期最稀缺的不是资料&#x…
📅 2026/7/24 8:07:40
充电ic您是否听说过?对于充电ic您了解多少呢?如果您想对充电ic有进一步的了解,欢迎阅读本文。本文中,小编将对LP3947锂电池充电ic予以介绍。通过本文,大家对这款充电ic将不再感到迷惑。如果您对充电ic知识充满渴望,不妨继续往下…
📅 2026/7/24 9:23:04
这次我们来看一个医疗领域的开源项目——Open Meditron,它专门为临床大语言模型(Clinical LLMs)设计了一套可审计的流程管道。这个项目由研究团队开源,重点解决医疗场景下LLM应用的可信度和透明度问题。医疗AI应用最关键的不仅是效…
📅 2026/7/24 9:23:04
1. 项目概述与核心价值 在嵌入式音频系统里,音频编解码器(Codec)的角色,就好比一个音频系统的“心脏”和“翻译官”。它负责将现实世界中的模拟声音信号(比如麦克风拾取的人声)转换成数字世界能理解的0和1&…
📅 2026/7/24 9:23:04
预算控制手工核对,每个月都在重复昨天的故事上个月跟一位制造业的财务主管聊天,她说了一句话让我印象特别深:我们公司预算控制的方式,说白了就是月底拉一张表,看看谁超了、超了多少,然后写一份报告解释为什…
📅 2026/7/24 9:23:04
1. 项目概述:AI智能体开发中的模型选择误区"所有环节都上最强模型"这个看似合理的策略,实际上正在成为AI智能体开发领域最昂贵的认知陷阱。过去半年里,我参与了7个不同规模的智能体项目,其中3个团队在初期都陷入了这个误…
📅 2026/7/24 9:23:04
1. 项目概述:为什么TextMeshPro是Unity UI的“工业标准”? 如果你在Unity里做过UI,尤其是做过需要大量、高质量文本显示的项目,比如RPG游戏的对话系统、MMO游戏的伤害数字、或者任何需要多语言支持的应用,那你一定对Un…
📅 2026/7/24 9:22:04
大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…
📅 2026/7/24 0:00:05
srcampy /libsrcampy 名称释义先明确结论: 官方文档没有公布标准化英文全称,是地平线内部项目缩写;行业公认拆解如下:srcampy Source Amplifier Python bindingsrc Source(图像源:MIPI Sensor、视频源&am…
📅 2026/7/24 0:01:06
该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…
📅 2026/7/24 0:01:06
1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…
📅 2026/7/24 1:07:52
1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…
📅 2026/7/24 1:07:52
更多请点击:
https://intelliparadigm.com
第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…
📅 2026/7/24 1:07:52
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/24 7:08:08
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/23 17:07:28
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/24 5:08:03