美文网首页
GopherCache【框架】-Swift-练习

GopherCache【框架】-Swift-练习

作者: 践行者 | 来源:发表于2020-01-19 15:55 被阅读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

    相关文章

      网友评论

          本文标题:GopherCache【框架】-Swift-练习

          本文链接:https://www.haomeiwen.com/subject/pobrzctx.html