ui-cache
v0.0.3
Published
Cache for SailFish
Readme
七鱼缓存库
七鱼缓存层基于不可变数据模型设计, 引用关系来实现不同缓存之间的通信。七鱼缓存库实现如下两个功能:
实体和列表的存储- 多个缓存的实例引用同一份数据源
- 不同缓存实例之间的通信

注: 接入的时候, 可以根据需求, 使用不可变数据概念(Immutable.js)。
构建npm指令
"dev": "webpack -p --config webpack.config.js",
"test": "karma start karma.conf.js"使用说明
- 保证数据的唯一性, 多个缓存的实例引用同一份数据源
- Hash实体以
id为主键, 现不支持自定义
// 继承 Super
var SuperCache = function(options){
this.init(options)
}
SuperCache.prototype = Object.create(Cache.prototype);
// 实例化
var supercache = new SuperCache({
name : 'super'
});
// 初始化设置列表
supercache.setListInCache([{id : 1, name : 1}], 'super-list-1');
// 继承 Sofia
var SofiaCache = function(options){
this.init(options)
}
SofiaCache.prototype = Object.create(Cache.prototype);
// 实例化
var sofiacache = new SuperCache({
name : 'sofia'
});
// 初始化设置列表
sofiacache.setListInCache([{id : 'a', name : 'a'}], 'sofia-list-1');
接口说明
全局缓存接口
getCacheByName(name)
通过名称查询全局缓存中 对象
// equal
supercache.getCacheByName('super');
sofiacache.getCacheByName('super');getCacheList(name, key)
通过 名称 查询全局缓存中 列表值
supercache.getCacheList('super', 'super-list-1')
sofiacache.getCacheList('super', 'super-list-1')getCacheHash(name, id)
通过 名称 和 id 查询全局缓存中 哈希值
supercache.getCacheHash('super', 1)
sofiacache.getCacheHash('sofia', 'a')列表缓存接口
setListInCache(array|object, key)
对列表数据的 添加 和 更新, 并对Hash进行 添加 和 更新
// add list
sofiacache.setListInCache([{id : 'a', name : 'a'}], 'sofia-list-1');
// add object
sofiacache.setListInCache({id : 'b', name : 'b'}, 'sofia-list-1');
// sofia-list-1 : [{id : 'a', name : 'a'}, {id : 'b', name : 'b'}]
getListInCache(key)
通过列表 key 获取相应列表索引
sofiacache.setListInCache([{id : 'a', name : 'a'}], 'sofia-list-1');
sofiacache.getListInCache('sofia-list-1');
// list : [{id : 'a', name : 'a'}]saveItemToCache(array|object)
保存数据项到 Hash 中
// add list
sofiacache.saveItemToCache([{id : 'a', name : 'a'}]);
// add object
sofiacache.saveItemToCache({id : 'b', name : 'b'});
// hash: {a : {id : 'a', name : 'a'}, b : {id : 'b', name : 'b'}}
unshiftItemInCache(array|object, key)
前向插入数据到 key 列表
// add list
sofiacache.unshiftItemInCache([{id : 'a', name : 'a'}], 'sofia-list-1');
// add object
sofiacache.unshiftItemInCache({id : 'b', name : 'b'}, 'sofia-list-1');
// sofia-list-1: [{id : 'b', name : 'b'}, {id : 'a', name : 'a'}]
deleteDataInCache(id)
同时删除 列表 中数据 和 Hash 中数据
sofiacache.setListInCache([{id : 'a', name : 'a'}], 'sofia-list-1');
sofiacache.deleteDataInCache('a');
// hash : {}, list : []removeItemInCache(id, key)
仅删除 key 列表中, id 的数据项, 不删除Hash中数据
sofiacache.setListInCache([{id : 'a', name : 'a'}], 'sofia-list-1');
sofiacache.removeItemInCache('a', 'unshift');
// hash : {a : {id : 'a', name : 'a'}}, list : []