Cache
Demo下載地址 https://github.com/softwarefaith/GopherCache
1. 簡介
1.1. 描述
GopherCache 是一個用于 Swift 語言中緩存庫,由內(nèi)存緩存和磁盤緩存兩部分組成示损,其中內(nèi)存緩存提供容量小但高速的存取功能雌澄,而磁盤緩存提供大容量但低速的持久化存儲鼻由,如下圖所示:
設(shè)計過程中把沼,參考了 YYCache, 并對此庫的核心代碼進(jìn)行了 Swift 版本的改寫以及重新設(shè)計三痰,設(shè)計 UML 圖如下:
具體設(shè)計如下:
1. 泛型協(xié)議接口
整體接口參照系統(tǒng) NSCache 類型定義,盡量保持接口統(tǒng)一
ICacheSynProtocol :同步接口
ICacheAsyProtocol : 異步接口
2. MemoryCache
2.1 通過 MemoryConfig 配置相關(guān)初始化參數(shù)
2.2 只遵循了 ICacheSynProtocol 同步協(xié)議,采用 pthread_mutex_t 自旋鎖保證線程安全瑟啃,其實(shí)內(nèi)部真正緩存類雙向列表 LinkedMap【遵循 ICacheSynProtocol 協(xié)議】
2.3 LinkedMap 配合 Map 實(shí)現(xiàn)了 LRU 淘汰算法
2.4 內(nèi)置后臺線程定時自動清理對象
3. DiskCache
2.1 通過 DiskConfig 配置相關(guān)初始化參數(shù)
2.2 遵循了 ICacheSynProtocol & ICacheAsyProtocol 協(xié)議先蒋,核心通過 KVStorage 混合存儲 【file & sqlite】實(shí)現(xiàn),data 數(shù)據(jù) > 20KB ,二進(jìn)制數(shù)據(jù)存儲到 file文件中辩撑,否則存儲到 inlinedata 中
2.3 存儲一類對象需要遵循 DataConvertable 協(xié)議
2.4 內(nèi)置后臺線程定時自動清理對象
4. Cache
外觀層界斜,集成了 DiskCache & MemoryCache,增加了 CacheAccessOptions 選項(xiàng)