# mm_cachebase **Repository Path**: qiuwenwu91/mm_cachebase ## Basic Information - **Project Name**: mm_cachebase - **Description**: No description available - **Primary Language**: NodeJS - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-02-17 - **Last Updated**: 2025-04-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # mm_cachebase 一个轻量级的本地缓存类库,提供了丰富的缓存操作接口,支持过期时间设置、数组操作等功能。 ## 安装 ```bash npm install mm_cachebase ``` ## 基本使用 ```javascript const CacheBase = require('mm_cachebase'); // 创建缓存实例 const cache = new CacheBase(); // 基本操作示例 async function example() { // 设置缓存,过期时间为10秒 await cache.set("name", "张三", 10); // 获取缓存 const value = await cache.get("name"); console.log(value); // 输出: 张三 // 删除缓存 await cache.del("name"); } ``` ## API 说明 ### 构造函数 ```javascript const cache = new CacheBase(); ``` 创建一个新的缓存实例。缓存实例包含以下属性: - `list`: 存储缓存数据的数组 - `func`: 到期通知函数(可选) ### 基本操作 #### 设置缓存 ```javascript await cache.set(key, value, maxAge) ``` - `key`: 缓存键名 - `value`: 缓存的值 - `maxAge`: 过期时间(秒),-1表示永不过期 - 返回: 设置的值 #### 获取缓存 ```javascript await cache.get(key) ``` - `key`: 缓存键名 - 返回: 缓存值,不存在则返回undefined #### 删除缓存 ```javascript await cache.del(key) ``` - `key`: 缓存键名 - 返回: 成功返回1,失败返回0 #### 添加缓存 ```javascript await cache.add(key, value, maxAge) ``` - 只在键不存在时添加缓存 - 返回: 添加成功返回值,已存在返回0 #### 判断键是否存在 ```javascript await cache.has(key) ``` - 返回: 存在返回1,不存在返回0 ### 过期时间操作 #### 设置/查询过期时间 ```javascript await cache.ttl(key, maxAge) ``` - `maxAge`: 不传则查询剩余时间,传入则设置新的过期时间 - 返回: 查询时返回剩余秒数,设置时返回1 ### 数值操作 #### 增加整数 ```javascript await cache.addInt(key, num) ``` - `num`: 要增加的数值,可以为负数 - 返回: 计算后的结果 #### 增加浮点数 ```javascript await cache.addFloat(key, num) ``` - 用法同addInt,支持浮点数 ### 字符串操作 #### 追加字符串 ```javascript await cache.addStr(key, str) ``` - 在已有字符串后追加新字符串 - 返回: 追加后的完整字符串 #### 获取子字符串 ```javascript await cache.getrange(key, start, end) ``` - 获取缓存字符串的指定范围 - 返回: 截取的字符串 #### 替换字符串 ```javascript await cache.setrange(key, index, value) ``` - 从指定位置替换字符串 ### 数组操作 #### 设置数组 ```javascript await cache.list_set(key, value, maxAge) ``` - 设置一个数组类型的缓存 #### 添加数组元素 ```javascript await cache.list_add(key, value) ``` - 向数组末尾添加元素 - 返回: 成功返回1,失败返回-1 #### 判断数组元素是否存在 ```javascript await cache.list_has(key, value) ``` - 检查数组中是否包含指定元素 #### 获取数组片段 ```javascript await cache.list_get(key, start, end) ``` - 获取数组的指定范围元素 #### 清空/重置数组 ```javascript await cache.list_clear(key, value) ``` - 清空数组或用新数组替换 ### 其他操作 #### 排序 ```javascript await cache.sort(key, way, obj_key) ``` - `way`: 'asc'升序或'desc'降序 - `obj_key`: 如果数组元素是对象,指定排序的键 #### 获取所有键名 ```javascript await cache.keys(pattern) ``` - `pattern`: 支持*通配符的匹配模式 - 返回: 匹配的键名数组 #### 清空缓存 ```javascript await cache.clear(pattern) ``` - `pattern`: 可选,支持*通配符,清空匹配的键 - 不传则清空所有缓存 ## 使用示例 ### 基本缓存操作 ```javascript const cache = new CacheBase(); async function example() { // 设置缓存 await cache.set("user", "张三", 60); // 60秒后过期 // 获取缓存 const user = await cache.get("user"); console.log(user); // 输出: 张三 // 检查是否存在 const exists = await cache.has("user"); console.log(exists); // 输出: 1 // 删除缓存 await cache.del("user"); } ``` ### 数组操作示例 ```javascript async function arrayExample() { // 设置数组 await cache.list_set("users", ["张三", "李四"], 300); // 添加元素 await cache.list_add("users", "王五"); // 获取数组 const users = await cache.list_get("users"); console.log(users); // 输出: ["张三", "李四", "王五"] // 排序 await cache.sort("users", "asc"); } ``` ### 过期时间管理 ```javascript async function ttlExample() { // 设置缓存 await cache.set("token", "abc123", 30); // 查询剩余时间 const ttl = await cache.ttl("token"); console.log(`剩余${ttl}秒`); // 延长过期时间 await cache.ttl("token", 60); // 设置永不过期 await cache.ttl("token", -1); } ``` ### 批量操作 ```javascript async function batchExample() { // 获取所有以user开头的键 const keys = await cache.keys("user*"); // 清空所有以temp开头的缓存 await cache.clear("temp*"); // 清空所有缓存 await cache.clear(); } ``` ## 注意事项 1. 所有操作方法都是异步的,需要使用async/await或Promise处理 2. 过期时间单位为秒,-1表示永不过期 3. 数组操作方法只能用于数组类型的缓存值 4. 键名支持*通配符匹配,可用于批量操作 5. 缓存数据存储在内存中,重启后数据会丢失