日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

LRU 存儲

根據 LRU 淘汰規則,LRU 存儲提供兩種存儲方法。

  • 內存緩存(APLRUMemoryCache):提供內存 LRU 淘汰算法的緩存,緩存 ID 對象。APLRUMemoryCache 是線程安全的,同時 LRU 算法基于鏈表實現,效率較高。

  • 磁盤緩存(APLRUDiskCache):提供持久化到數據庫的 LRU 淘汰算法緩存,緩存支持 NSCoding 的對象。使用數據庫相比文件會更容易維護,也使磁盤更整潔。

內存緩存

  • @property (nonatomic, assign) BOOL handleMemoryWarning; // default NO

    設置是否處理系統內存警告,默認為 NO。如果設置為 YES,當有內存警告時會清空緩存。

  • (id)initWithCapacity:(NSInteger)capacity;

    初始化,指定容量。

  • (void)setObject:(id)object forKey:(NSString*)key;

    將對象存入緩存,如果 object 為 nil,會刪除對象。

  • (void)setObject:(id)object forKey:(NSString*)key expire:(NSTimeInterval)expire;

    將對象存入緩存,并指定一個過期時間戳。

  • (id)objectForKey:(NSString*)key;

    取對象。

  • (void)removeObjectForKey:(NSString*)key;

    刪除對象。

  • (void)removeAllObjects;

    刪除所有對象。

  • (void)addObjects:(NSDictionary*)objects;

    批量添加數據,無法單獨設置每個對象的 expire 時間,默認都是永不過期的對象。

  • (void)removeObjectsWithRegex:(NSString*)regex;

    批量刪除數據,數據的 key 匹配 regex 的正則表達式。

  • (void)removeObjectsWithPrefix:(NSString*)prefix;

    批量刪除具有某個前綴的所有數據。

  • (void)removeObjectsWithSuffix:(NSString*)suffix;

    批量刪除具有某個后綴的所有數據。

  • (void)removeObjectsWithKeys:(NSSet*)keys;

    批量刪除所有 keys 指定的數據。

  • (NSArray*)peekObjects:(NSInteger)count fromHead:(BOOL)fromHead;

    將緩存對象讀取到一個數組里,但不做 LRU 緩存策略處理。fromHead 為 YES 時,從頭開始遍歷,否則對尾開始遍歷。

  • (BOOL)objectExistsForKey:(NSString*)key;

    快速判斷某個 key 的對象是否存在,不會影響 LRU。

  • (void)resetCapacity:(NSInteger)capacity;

    更新容量,如果新容量比原先的小,會刪除部分緩存。

磁盤緩存

  • (id)initWithName:(NSString*)name capacity:(NSInteger)capacity userDependent:(BOOL)userDependent crypted:(BOOL)crypted;

    創建一個持久化的 LRU 緩存,存入的對象需要支持 NSCoding 協議。

    參數如下表

    參數

    說明

    name

    緩存的名字,用做數據庫的表名。

    capacity

    容量,實際容量會比這個大一些,解決緩存滿時添加數據的性能問題。

    userDependent

    是否與用戶相關,如果與用戶相關,當 APDataCenter.currentUserId 為空時緩存無法操作;當切換用戶后,緩存會自動指向當前用戶的表,業務無須關心這個事件。

    crypted

    數據是否加密。

    返回值:緩存實例,業務需要持有。

  • (void)setObject:(id)object forKey:(NSString*)key;

    緩存一個對象,expire 默認為 0,也就是永不過期。

  • (void)setObject:(id)object forKey:(NSString*)key expire:(NSTimeInterval)expire;

    緩存一個對象,并指定過期的時間戳。

    參數如下表

    參數

    說明

    object

    對象,如果為 nil 會刪除指定 key 的對象。

    key

    -

    expire

    過期時間戳,指定一個相對于 1970 的絕對時間戳。可以使用 [date timeIntervalSince1970]。

  • (id)objectForKey:(NSString*)key;

    取對象,如果對象讀取出來時,指定的 expire 時間戳已經達到,會返回 nil,并刪除對象。如果調用 objectForKey 前,有其它 setObject 操作寫數據庫未完成,會等待。

  • (void)removeObjectForKey:(NSString*)key;

    刪除對象。

  • (void)removeAllObjects;

    刪除所有對象。

  • (void)addObjects:(NSDictionary*)objects;

    批量添加數據。

  • (void)removeObjectsWithSqlLike:(NSString*)like;

    批量刪除數據,數據的 key 使用 sqlite 的 like 語句匹配。

  • (void)removeObjectsWithKeys:(NSSet*)keys;

    批量刪除所有 keys 指定的數據。