GopherCache【框架】-Swift-练习

2020-01-19  本文已影响0人  践行者

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 选项

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

上一篇下一篇

猜你喜欢

热点阅读