YYCache
YYCache 是提供用户使用的对象,内部对 YYMemoryCache 和 YYDiskCache 功能的整合封装。为 YYMemoryCache 提供了多线程功能,而 YYDiskCache 对象本身内部封装了异步读写功能。
YYMemoryCache
YYMemoryCache 内部有一个储存对象,实现分为两部分:
1.第一部分,淘汰算法,这里使用一个双向链表,每个节点为 _YYLinkedMapNode 类对象,通过访问最后访问时间来对链表进行排列,最新访问的缓存节点放在链表的头部,淘汰算法只需要将链表未尾节点移除即可
2.第二部分,查找算法,这里使用的是 CFMutableDictionaryRef 散列表进行存储
YYMemoryCache 的多线程安全是 使用 pthread_mutex_t(互斥锁) 来完成
YYDiskCache
1.YYDiskCache 是对 YYKVStorage 封装了异步访问 API,多线程安全使用 dispatch_semaphore_t(二元信号量) 来完成
2.YYDiskCache 中同一功能方法,同步和异步的区别:异步方法的实现其实质上就是只是异步的调用了同步方法
3.YYDiskCache 自动清理缓存机制,通过dispatch_after方法递归调用清理缓存