我在这里错过了什么?我将: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
文档
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 个项目。 等等...这就是我要说的。
这看起来像是core.cache中的一个错误,在此提交中已修复:
https://github.com/clojure/core.cache/commit/b705f56b3e8e6d1bab97e1411e264fed48bc3694
我得到了与您使用 0.6.2 相同的行为,并在切换到 0.6.3-SNAPSHOT(可从 https://oss.sonatype.org/content/repositories/snapshots/获得)时获得了正确的结果。