GopherCache【框架】-Swift-練習(xí)

Cache

Demo下載地址 https://github.com/softwarefaith/GopherCache

掘金訪問

簡書訪問

1. 簡介

1.1. 描述

GopherCache 是一個用于 Swift 語言中緩存庫,由內(nèi)存緩存磁盤緩存兩部分組成,其中內(nèi)存緩存提供容量小但高速的存取功能,而磁盤緩存提供大容量但低速的持久化存儲,如下圖所示:

CacheOverView.png

設(shè)計過程中,參考了 YYCache, 并對此庫的核心代碼進(jìn)行了 Swift 版本的改寫以及重新設(shè)計,設(shè)計 UML 圖如下:

CacheUMLV1.0.png

具體設(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)

下載地址 https://github.com/softwarefaith/GopherCache

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 寫在前面,UIL這個圖片加載框架在去年的時候,作者就已經(jīng)宣布因?yàn)闀r間關(guān)系,停止維護(hù)了!以下為作者原話: Proje...
    寶塔山上的貓閱讀 520評論 0 3
  • 10.MemoryCache MemoryCache是實(shí)現(xiàn)內(nèi)存緩存的類,不管是內(nèi)存緩存還是磁盤緩存,對于Image...
  • 理論總結(jié) 它要解決什么樣的問題? 數(shù)據(jù)的訪問、存取、計算太慢、太不穩(wěn)定、太消耗資源,同時,這樣的操作存在重復(fù)性。因...
    jiangmo閱讀 3,159評論 0 11
  • 歌德說過:“一書一世界”。 短短五個字,道出了書的可貴。 偉大的祖先創(chuàng)造了文字,創(chuàng)造了書籍,將人類有限的生命賦予書...
    巴於圭閱讀 4,669評論 20 25
  • 并不是說技術(shù)含量有多高,或者平臺有多高端就是贏家,如果你的產(chǎn)品不被大眾所接受那么一樣是輸家,就像我們的服裝...
    孫倩閱讀 329評論 0 0

友情鏈接更多精彩內(nèi)容