当前位置: 首页 > news >正文

鸿蒙NEXT开发缓存工具类(ArkTs)

import { ObjectUtil } from './ObjectUtil';

/**
 * 缓存工具类
 *
 * 该类提供了一组静态方法,用于操作缓存数据。
 * 主要功能包括:获取缓存数据、存储缓存数据、删除缓存数据、检查键是否存在、判断缓存是否为空以及清空缓存。
 *
 * @author CSDN-鸿蒙布道师
 * @since 2025/04/03
 */
export class CacheUtil {
  private static cache: Record<string, Object> = {}; // 私有缓存对象

  /**
   * 获取缓存中的数据
   *
   * 根据指定的键从缓存中获取对应的值。如果键不存在,则返回 `undefined`。
   *
   * @param key - 存入的键
   * @returns 缓存中的值,类型为泛型 T 或 undefined
   */
  static get<T>(key: string): T | undefined {
    const value = Reflect.get(CacheUtil.cache, key);
    return value as T;
  }

  /**
   * 将数据存入缓存中
   *
   * 将指定的键值对存入缓存中。如果键已存在,则会覆盖原有值。
   *
   * @param key - 存入的键
   * @param value - 存入的数据
   */
  static put<T>(key: string, value: T): void {
    Reflect.set(CacheUtil.cache, key, value);
  }

  /**
   * 删除对应的缓存
   *
   * 根据指定的键删除缓存中的对应数据。如果键不存在,则不会抛出错误。
   *
   * @param key - 要删除的键
   */
  static remove(key: string): void {
    ObjectUtil.deleteRecord(CacheUtil.cache, key);
  }

  /**
   * 判断缓存中是否存在指定的键
   *
   * 检查缓存中是否包含指定的键。
   *
   * @param key - 要检查的键
   * @returns 如果键存在,则返回 true;否则返回 false
   */
  static has(key: string): boolean {
    return Reflect.has(CacheUtil.cache, key);
  }

  /**
   * 判断缓存是否为空
   *
   * 检查缓存中是否没有任何数据。
   *
   * @returns 如果缓存为空,则返回 true;否则返回 false
   */
  static isEmpty(): boolean {
    const keys = Object.keys(CacheUtil.cache);
    return keys.length === 0;
  }

  /**
   * 清除缓存数据
   *
   * 清空缓存中的所有数据。
   */
  static clear(): void {
    CacheUtil.cache = {};
  }
}

代码如下:

import { ObjectUtil } from './ObjectUtil';

/**
 * 缓存工具类
 *
 * 该类提供了一组静态方法,用于操作缓存数据。
 * 主要功能包括:获取缓存数据、存储缓存数据、删除缓存数据、检查键是否存在、判断缓存是否为空以及清空缓存。
 *
 * @author CSDN-鸿蒙布道师
 * @since 2025/04/03
 */
export class CacheUtil {
  private static cache: Record<string, Object> = {}; // 私有缓存对象

  /**
   * 获取缓存中的数据
   *
   * 根据指定的键从缓存中获取对应的值。如果键不存在,则返回 `undefined`。
   *
   * @param key - 存入的键
   * @returns 缓存中的值,类型为泛型 T 或 undefined
   */
  static get<T>(key: string): T | undefined {
    const value = Reflect.get(CacheUtil.cache, key);
    return value as T;
  }

  /**
   * 将数据存入缓存中
   *
   * 将指定的键值对存入缓存中。如果键已存在,则会覆盖原有值。
   *
   * @param key - 存入的键
   * @param value - 存入的数据
   */
  static put<T>(key: string, value: T): void {
    Reflect.set(CacheUtil.cache, key, value);
  }

  /**
   * 删除对应的缓存
   *
   * 根据指定的键删除缓存中的对应数据。如果键不存在,则不会抛出错误。
   *
   * @param key - 要删除的键
   */
  static remove(key: string): void {
    ObjectUtil.deleteRecord(CacheUtil.cache, key);
  }

  /**
   * 判断缓存中是否存在指定的键
   *
   * 检查缓存中是否包含指定的键。
   *
   * @param key - 要检查的键
   * @returns 如果键存在,则返回 true;否则返回 false
   */
  static has(key: string): boolean {
    return Reflect.has(CacheUtil.cache, key);
  }

  /**
   * 判断缓存是否为空
   *
   * 检查缓存中是否没有任何数据。
   *
   * @returns 如果缓存为空,则返回 true;否则返回 false
   */
  static isEmpty(): boolean {
    const keys = Object.keys(CacheUtil.cache);
    return keys.length === 0;
  }

  /**
   * 清除缓存数据
   *
   * 清空缓存中的所有数据。
   */
  static clear(): void {
    CacheUtil.cache = {};
  }
}

http://www.dtcms.com/a/109334.html

相关文章:

  • 华为云 云化数据中心 CloudDC | 架构分析与应用场景
  • Java学习总结-Flie-IO流
  • 解决Ubuntu文件夹锁标记
  • 【youcans论文精读】弱监督深度检测网络(Weakly Supervised Deep Detection Networks)
  • Spring Boot 3.4.3 整合 Quartz 定时任务
  • Onloyoffice公式 从指定的数据范围中筛选出符合条件的数据行 放到别的sheet里面
  • Ubuntu 安装eBPF编译环境。
  • 【C++基础知识】odygrd/quill 中编译时计算可变参数个数的原理解析
  • WGAN原理及实现(pytorch版)
  • 简单聊聊机器视觉中常提的2D、2.5D和3D技术
  • Java面试33-fail-safe机制与fail-fast机制分别有什么作用
  • 从代码学习深度学习 - RNN PyTorch版
  • 浙江大学郑小林教授解读智能金融与AI的未来|附PPT下载方法
  • 电子电气架构 --- 面向服务的体系架构
  • Python垃圾回收:循环引用检测算法实现
  • 【面试题】如何用两个线程轮流输出0-200的值
  • 大模型应用初学指南
  • Linux 查找文本中控制字符所在的行
  • 线性欧拉筛
  • AF3 OpenFoldDataset类解读
  • 【面试篇】Kafka
  • 记录学习的第二十天
  • 【LeetCode 题解】数据库:626.换座位
  • Java基础:Logback日志框架
  • C# 与 相机连接
  • 接收灵敏度的基本概念与技术解析
  • 【计网】作业三
  • 2025年2月,美国发布了新版移动灯的安规标准:UL153标准如何办理?
  • MySQL:库表操作
  • CATIA装配体全自动存储解决方案开发实战——基于递归算法的产品结构树批量处理技术