GopherCache【框架】-Swift-练习

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 写在前面,UIL这个图片加载框架在去年的时候,作者就已经宣布因为时间关系,停止维护了!以下为作者原话: Proje...
    宝塔山上的猫阅读 3,237评论 0 3
  • 10.MemoryCache MemoryCache是实现内存缓存的类,不管是内存缓存还是磁盘缓存,对于Image...
    反复横跳的龙套阅读 3,418评论 1 0
  • 理论总结 它要解决什么样的问题? 数据的访问、存取、计算太慢、太不稳定、太消耗资源,同时,这样的操作存在重复性。因...
    jiangmo阅读 8,048评论 0 11
  • 歌德说过:“一书一世界”。 短短五个字,道出了书的可贵。 伟大的祖先创造了文字,创造了书籍,将人类有限的生命赋予书...
    巴於圭阅读 9,983评论 20 25
  • 并不是说技术含量有多高,或者平台有多高端就是赢家,如果你的产品不被大众所接受那么一样是输家,就像我们的服装...
    孙倩阅读 1,787评论 0 0