带有上限和 TTL 的 Clojure 缓存

Joe*_*Joe 4 caching clojure

我正在使用clojure.core.memoize(使用clojure.core.cache)。我想使用TTL 缓存,但也希望对总缓存大小设置上限(因为我可以为 FIFO 缓存提供)。

我知道有各种各样的缓存组合了队列、TTL 等。我不一定想要那种奇特的东西,只是一种限制集合大小的简单方法?

xsc*_*xsc 5

所有 memoize 函数clojure.core.memoize似乎都采用了一个可选的基本缓存,可用于组合不同的缓存策略:

(require '[clojure.core [memoize :as memo] [cache :as cache]])
(def memoized-identity
  (memo/fifo
    identity
    (cache/ttl-cache-factory {} :ttl 5000)
    :fifo/threshold 32))
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅关于可组合性core.cachewiki 条目