mm_cachebase

1.4.5 • Public • Published

mm_cachebase

一个轻量级的本地缓存类库,提供了丰富的缓存操作接口,支持过期时间设置、数组操作等功能。

安装

npm install mm_cachebase

基本使用

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 说明

构造函数

const cache = new CacheBase();

创建一个新的缓存实例。缓存实例包含以下属性:

  • list: 存储缓存数据的数组
  • func: 到期通知函数(可选)

基本操作

设置缓存

await cache.set(key, value, maxAge)
  • key: 缓存键名
  • value: 缓存的值
  • maxAge: 过期时间(秒),-1表示永不过期
  • 返回: 设置的值

获取缓存

await cache.get(key)
  • key: 缓存键名
  • 返回: 缓存值,不存在则返回undefined

删除缓存

await cache.del(key)
  • key: 缓存键名
  • 返回: 成功返回1,失败返回0

添加缓存

await cache.add(key, value, maxAge)
  • 只在键不存在时添加缓存
  • 返回: 添加成功返回值,已存在返回0

判断键是否存在

await cache.has(key)
  • 返回: 存在返回1,不存在返回0

过期时间操作

设置/查询过期时间

await cache.ttl(key, maxAge)
  • maxAge: 不传则查询剩余时间,传入则设置新的过期时间
  • 返回: 查询时返回剩余秒数,设置时返回1

数值操作

增加整数

await cache.addInt(key, num)
  • num: 要增加的数值,可以为负数
  • 返回: 计算后的结果

增加浮点数

await cache.addFloat(key, num)
  • 用法同addInt,支持浮点数

字符串操作

追加字符串

await cache.addStr(key, str)
  • 在已有字符串后追加新字符串
  • 返回: 追加后的完整字符串

获取子字符串

await cache.getrange(key, start, end)
  • 获取缓存字符串的指定范围
  • 返回: 截取的字符串

替换字符串

await cache.setrange(key, index, value)
  • 从指定位置替换字符串

数组操作

设置数组

await cache.list_set(key, value, maxAge)
  • 设置一个数组类型的缓存

添加数组元素

await cache.list_add(key, value)
  • 向数组末尾添加元素
  • 返回: 成功返回1,失败返回-1

判断数组元素是否存在

await cache.list_has(key, value)
  • 检查数组中是否包含指定元素

获取数组片段

await cache.list_get(key, start, end)
  • 获取数组的指定范围元素

清空/重置数组

await cache.list_clear(key, value)
  • 清空数组或用新数组替换

其他操作

排序

await cache.sort(key, way, obj_key)
  • way: 'asc'升序或'desc'降序
  • obj_key: 如果数组元素是对象,指定排序的键

获取所有键名

await cache.keys(pattern)
  • pattern: 支持*通配符的匹配模式
  • 返回: 匹配的键名数组

清空缓存

await cache.clear(pattern)
  • pattern: 可选,支持*通配符,清空匹配的键
  • 不传则清空所有缓存

使用示例

基本缓存操作

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");
}

数组操作示例

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");
}

过期时间管理

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);
}

批量操作

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. 缓存数据存储在内存中,重启后数据会丢失

/mm_cachebase/

    Package Sidebar

    Install

    npm i mm_cachebase

    Weekly Downloads

    10

    Version

    1.4.5

    License

    ISC

    Unpacked Size

    21.8 kB

    Total Files

    5

    Last publish

    Collaborators

    • qiuwenwu