YYCache源码解读 (一)

YYCache

  YYCache是 ibireme 大神在2015年设计的一个IOS缓存工具。
  通常来讲,一个缓存包括内存缓存和磁盘缓存。YYCache在磁盘缓存的设计上使用数据库sqlite映射和文件系统映射的方式进行存储,内存中设计了一个双向链表的结构存储数据结点。内存和磁盘的数据淘汰策略均采用了lru算法进行实现。同时在存储上,YYCache分别对对象数量,存储容量,对象生存周期、内存警告、程序退出到后台时的状态等进行了限制。同时采用锁结构和信号量保证了线程同步与安全。

在这里插入图片描述

图一:YYCache类图

  如图一所示,YYCache的结构主要包括三部分,分别是磁盘缓存部分、内存缓存部分、YYCache主体类。其中磁盘缓存部分包括YYDiskCache和YYKVStorage两个类,在YYKVStorage中实现了存取和删除操作,其中包括对数据库sqlite和文件的存取和删除,以文件大小阈值决定存储在文件还是存储在数据库,默认20k. YYDiskCache中主要实现了存取操作的方法、定时检查(根据三个变量:对象数量、对象存储容量、对象保存时间、磁盘剩余空闲空间)并淘汰缓存内最早访问的值(LRU算法)。YYMemoryCache实现了内存中的缓存逻辑,主要维护了一个链表,实现了将任意结点移动到头结点,在头结点处插入、尾结点处删除的方法,实现了LRU算法。YYCache与YYDiskCache和YYMemoryCache相关联,同时增加一个值到内存和磁盘,查询数据会优先查询内存中变量。同时YYCache会定时检查内存和磁盘,并根据判断执行淘汰操作。

YYDiskCache

YYKVStorage

YYMemoryCache

YYCache

未完待续 未央书斋 温故知新

猜你喜欢

转载自blog.csdn.net/Ambrosedream/article/details/119211083