微信小程序的简单缓存存储, 支持 TTL(time-to-live) 缓存自动过期
npm install weapp-simple-storage --save
import SimpleStorage from 'weapp-simple-storage';
var simpleStorage = new SimpleStorage({
name: '_weapp_simple_storage'
});
simpleStorage.set('key', {
foo: 'bar'
}, {
ttl: 60000
});
simpleStorage.get('key');
simpleStorage.has('key');
simpleStorage.delete('key');
simpleStorage.clear();
-
所有的缓存数据都存储在微信小程序缓存存储的一个 key 上面
-
缓存的数据与元数据分开存储, 类似数据库表的设计思路:
主表 + 扩展表
- 缓存的数据可以看做是主表数据
- 缓存的元数据可以看做是多张扩展表(关联表)数据(以 key 为外链)
- 多张扩展表便于隔离数据和扩展
缓存数据(主表)
key(PK) value key1 value1 key2 value2 元数据1(扩展表1)
key(FK) value key1 meta1-value1 key2 meta1-value2 元数据2(扩展表2)
key(FK) value key1 meta2-value1 key2 meta2-value2
{
"name": { // new SimpleStorage({ name: 'name' });
"key1": "value1" // simpleStorage.set('key1', 'value1');
"key2": "value2" // simpleStorage.set('key2', 'value2');
"_meta_name": {
"meta1": {
"key1": "meta1-value1" // simpleStorage.setMeta('meta1', 'key1', 'meta1-value1');
"key2": "meta1-value2" // simpleStorage.setMeta('meta1', 'key2', 'meta1-value2');
},
"meta2": {
"key1": "meta2-value1" // simpleStorage.setMeta('meta2', 'key1', 'meta2-value1');
"key2": "meta2-value2" // simpleStorage.setMeta('meta2', 'key2', 'meta2-value2');
}
}
}
}
实际的缓存数据示例
存储所有缓存数据的 key 值的名称
日志级别, 默认为 WARN
级别, 具体级别请查看 simple-console-log-level
设置某个缓存
获取某个缓存
是否存在某个缓存
删除某个缓存
清除所有缓存
获取缓存中的所有 key 值
设置元数据
获取元数据
是否有元数据
设置缓存的存活时长(ms)
获取缓存的存活时间(ms)
安装插件: SimpleStorage.installPlugin(Plugin);
- Plugin 缓存的插件机制
- TtlPlugin TTL 缓存机制的插件(内置)
- DumpPlugin 获取缓存数据的所有内容(包括元数据)
- TimePlugin 记录缓存数据的新增和更新时间