跳到主要内容

CachePlain

源码

cache = CachePlain[Info, Data](cache_size: int)

缓存的简单实现,其中InfoData是泛型。

本项目中,InfoData分别设置为CachedFileInfoCachedData

CachePlain的实例仅能在线程间共享缓存数据。它可以用在普通的callback中。然而,对于背景callback而言,子进程内任何对CachePlain修改都将在callback结束时被舍弃。

对该缓存的操作是线程安全的。

别名

该类可以通过以下方法取得。

import dash_file_cache as dfc


dfc.CachePlain
dfc.caches.CachePlain
dfc.caches.memory.CachePlain

参数

参数类型必选
说明
cache_sizeint缓存容量,亦即缓存中可保存项目的最大数目。当缓存字典填满时,检查最久未查询过的关键字,并清出该数据。

方法

is_in

flag: bool = cache.is_in(key: str)

检查key是否注册在了缓存中。

运算符__contains__委托给了该方法。

输入

参数类型必选
说明
keystr要验证的关键字。

输出

参数类型
说明
flagbool若取值True,则表明key给定的值存在于缓存中。

remove

info: Info = cache.remove(key: str)

指定某缓存字典项,将其从缓存中移出为信息。

调用该方法、蕴含了数据结束生命周期的断言。调用后,只有缓存数据的信息仍然可用。

输入

参数类型必选
说明
keystr将要从缓存中移除的数据的关键字。

输出

参数类型
说明
infoInfo从缓存中所查询到的数据、对应的轻量化信息。

dump

cache.dump(key: str, info: Info, data: Data)

向缓存中置入数据。

输入

参数类型必选
说明
keystr新数据的关键字。若该关键字key已存在于缓存中,则替换原值。
infoInfo要写入缓存中数据的轻量化信息。
dataData要写入缓存中的数据。

load

info, data_loader = cache.load(key: str)

透过某关键字,从缓存中载入数据。

输入

参数类型必选
说明
keystr要查询数据的关键字。若该关键字key未找到,抛出FileNotFoundError

输出

参数类型
说明
infoInfo从缓存中所查询到的数据、对应的轻量化信息。
data_loaderCallable[[], Data]缓存数据的懒加载器。该函数实现了一种延迟加载机制,从而允许大体量数据仅在需要使用的时候才实际加载。

load_info

info: Info = cache.load_info(key: str)

透过某关键字,读取对应的元数据。

该方法的实现,基于获取load(key)[0]返回的值。

输入

参数类型必选
说明
keystr要查询数据的关键字。若该关键字key未找到,抛出FileNotFoundError

输出

参数类型
说明
infoInfo从缓存中所查询到的数据、对应的轻量化信息。

load_data

data: Data = cache.load_data(key: str)

透过某关键字,加载对应的缓存数据。

该方法的实现,基于获取load(key)[1]()调用的结果。

输入

参数类型必选
说明
keystr要查询数据的关键字。若该关键字key未找到,抛出FileNotFoundError

输出

参数类型
说明
dataData从缓存中所查询到的数据。由于data可能体量较大,该值在大多数情况下,应当定义为一个类文件对象。

属性

cache

cache_dict: LRUDict[str, Tuple[Info, Data]] = cache.cache

获取该实例底层的低层级 LRU 缓存对象。该值的类型是LRUDict

运算符

__contains__

flag: bool = key in cache

检查key是否注册在了缓存中。

输入

参数类型必选
说明
keystr要验证的关键字。

输出

参数类型
说明
flagbool若取值True,则表明key给定的值存在于缓存中。

范例

参见

各类缓存