具有上限和TTL的Clojure缓存

时间:2014-09-23 12:41:29

标签: caching clojure

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

我知道有各种各样的缓存可以结合队列,TTL等。我不一定想要一些异国情调的东西,只是一种简单的方法来限制集合大小?

2 个答案:

答案 0 :(得分:3)

clojure.core.memoize中的所有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))

有关详情,请参阅core.cache&#39} wiki entry on composability

答案 1 :(得分:0)

clojure.core.memoize 1.0.236中的更新用法

(def memoized-inc
  (memo/memoizer (fn [m] (println ::HIT m) (inc m))
                 (-> {}
                     (cache/fifo-cache-factory :threshold 32)
                     (cache/ttl-cache-factory :ttl 5000))))