Clojure core.cache:阈值加倍

时间:2012-09-25 19:35:01

标签: caching clojure

我在这里缺少什么?我将:threshold设置为2,但似乎使用了4。

版本[org.clojure/core.cache "0.6.2"]

user=> (require '[clojure.core.cache :as cache])
nil

user=> (def foo (cache/fifo-cache-factory {} :threshold 2))
#'user/foo

使用cache/miss doc

user=> (-> foo (cache/miss :1 1) (cache/miss :2 2) (cache/miss :3 3) (cache/miss :4 4))
{:4 4, :3 3, :2 2, :1 1}

user=> (-> foo (cache/miss :1 1) (cache/miss :2 2) (cache/miss :3 3) (cache/miss :4 4) (cache/miss :5 5))
{:5 5, :4 4, :3 3, :2 2}

使用assoc

user=> (-> foo (assoc :1 1) (assoc :2 2) (assoc :3 3) (assoc :4 4))
{:4 4, :3 3, :2 2, :1 1}

user=> (-> foo (assoc :1 1) (assoc :2 2) (assoc :3 3) (assoc :4 4) (assoc :5 5))
{:5 5, :4 4, :3 3, :2 2}

如果我设置:threshold 5,则允许10个项目。等等... This正是我的目标。

1 个答案:

答案 0 :(得分:2)

这看起来像core.cache中的一个错误,已在此提交中修复:

https://github.com/clojure/core.cache/commit/b705f56b3e8e6d1bab97e1411e264fed48bc3694

我得到了与使用0.6.2相同的行为,当我切换到0.6.3-SNAPSHOT(可从https://oss.sonatype.org/content/repositories/snapshots/获得)时得到了正确的结果。