2012-09-24 1 views
4

저는 벡터처럼 동작하는 캐시를 찾고 있습니다. 나는 core.cache을 사용하고 있었지만 그것들은 맵입니다. 난 단순한 FIFO 제거 방법이 필요해. 내가 간단하게 CacheProtocol 프로토콜을 사용하여 내 자신을 만들 수 있다는 것을 알았지 만, 이와 같은 것이 이미 존재하는지 또는 이것이 나쁜 생각인지에 대한 이유가 있는지 알고 싶었습니다.클로저 벡터 캐시

+0

주 볼 수있는 세인트 나는 질문을 이해하고있다; 벡터의 내용을 캐시 할 때 각 색인의 요소가 사용 가능 해지면 새로운 값으로 대체되기를 원하십니까? –

+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]