Cache
Demo下载地址 https://github.com/softwarefaith/GopherCache
1. 简介
1.1. 描述
GopherCache 是一个用于 Swift 语言中缓存库,由内存缓存和磁盘缓存两部分组成,其中内存缓存提供容量小但高速的存取功能,而磁盘缓存提供大容量但低速的持久化存储,如下图所示:
CacheOverView.png设计过程中,参考了 YYCache, 并对此库的核心代码进行了 Swift 版本的改写以及重新设计,设计 UML 图如下:
CacheUMLV1.0.png具体设计如下:
1. 泛型协议接口
整体接口参照系统 NSCache 类型定义,尽量保持接口统一
ICacheSynProtocol :同步接口
ICacheAsyProtocol : 异步接口
2. MemoryCache
2.1 通过 MemoryConfig 配置相关初始化参数
2.2 只遵循了 ICacheSynProtocol 同步协议,采用 pthread_mutex_t 自旋锁保证线程安全,其实内部真正缓存类双向列表 LinkedMap【遵循 ICacheSynProtocol 协议】
2.3 LinkedMap 配合 Map 实现了 LRU 淘汰算法
2.4 内置后台线程定时自动清理对象
3. DiskCache
2.1 通过 DiskConfig 配置相关初始化参数
2.2 遵循了 ICacheSynProtocol & ICacheAsyProtocol 协议,核心通过 KVStorage 混合存储 【file & sqlite】实现,data 数据 > 20KB ,二进制数据存储到 file文件中,否则存储到 inlinedata 中
2.3 存储一类对象需要遵循 DataConvertable 协议
2.4 内置后台线程定时自动清理对象
4. Cache
外观层,集成了 DiskCache & MemoryCache,增加了 CacheAccessOptions 选项
网友评论