我正在寻找一个行为像矢量的缓存。我一直在使用core.cache但这些都是地图。我只需要一个简单的fifo驱逐方法。我意识到我可以使用CacheProtocol
协议创建我自己的协议,但我想知道这样的事情是否已经存在或者是否有理由这是个坏主意。
答案 0 :(得分:2)
如果您需要的是一个类似于缓存接口的向量,那么值的索引缓存很可能会满足您的需求。我猜测你的具体问题,虽然看起来很可能使用数字作为你的缓存的关键字将填充许多用例因为向量在概念上非常类似于数字到值的映射:
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]
在大多数情况下,使用数字作为索引可能会为许多人做好工作