我正在寻找一个行为像矢量的缓存.我一直在使用
core.cache,但那些是地图.我只需要一个简单的fifo驱逐方法.我意识到我可以使用CacheProtocol协议简单地创建我自己的协议,但我想知道这样的事情是否已经存在,或者是否有理由这是一个坏主意. 最佳答案 如果您只需要一个像缓存接口的向量,那么值的索引缓存很可能会满足您的需求.我猜测你的具体问题,虽然看起来很可能使用数字作为缓存的关键字会填充许多用例,因为向量在概念上非常类似于数字到值的映射:
user> (def C (cache/fifo-cache-factory {0 1 1 0}))
user> (get C 0)
1
如果这还不够,那么您可以以矢量的形式查看缓存的当前内容,如下所示:
user> (vec (map #(get C % nil) (range 11)))
[1 0 nil nil nil nil nil nil nil nil nil]
在大多数情况下,使用数字作为索引可能会为许多人完成工作