The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:
一个月前,我遇到了一个问题:我找不到一个能够在内存中进行缓存且具有超时失效功能的 Ruby gem。经过一番快速的研究后,我决定自己实现一个,并将其命名为 Zache(意为“零缓存”,因为没有后端)。下面是它的工作原理:
首先,你需要创建缓存:
然后您通过键获取值,同时提供将在键不存在或过期时执行的代码块:
在这里,:x
是键,15
是它在缓存中保留的秒数,直到过期。
需要注意的是,键不会自动从缓存中删除。它将保留在那里,直到下一次调用get(:x)
。只有在那时,它才会被标记为“过期”。为了清理缓存,您可以调用zache.clean()
,所有过期的键都将被删除。
您可以定期在单独的线程中执行此操作,例如,每分钟执行一次:
同时,当然,Zache是线程安全的。
该宝石存放在这个GitHub代码库中。如果您发现了错误,请随时报告,或者帮助我们增加额外的功能。
Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-15 at 06:44