一个轻量级的本地缓存类库,提供了丰富的缓存操作接口,支持过期时间设置、数组操作等功能。
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");
}
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();
}
- 所有操作方法都是异步的,需要使用async/await或Promise处理
- 过期时间单位为秒,-1表示永不过期
- 数组操作方法只能用于数组类型的缓存值
- 键名支持*通配符匹配,可用于批量操作
- 缓存数据存储在内存中,重启后数据会丢失