我正在使用clojure.core.memoize
(使用clojure.core.cache
)。我想使用TTL cache,但也希望对总缓存大小设置上限(因为我可以提供FIFO缓存)。
我知道有各种各样的缓存可以结合队列,TTL等。我不一定想要一些异国情调的东西,只是一种简单的方法来限制集合大小?
答案 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))))