initial entry caching implementation

This commit is contained in:
Athou
2013-06-28 17:02:29 +02:00
parent 25bc35ef14
commit fbd0feb6e7
2 changed files with 42 additions and 1 deletions

View File

@@ -0,0 +1,31 @@
package com.commafeed.backend.cache;
import java.util.concurrent.TimeUnit;
import com.commafeed.backend.model.Feed;
import com.commafeed.backend.model.FeedEntry;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
public class CacheService {
Cache<String, Marker> entryCache = CacheBuilder.newBuilder()
.maximumSize(1000000).expireAfterWrite(24, TimeUnit.HOURS).build();
private static enum Marker {
INSTANCE
}
public boolean hasFeedEntry(Feed feed, FeedEntry entry) {
return entryCache.getIfPresent(buildKey(feed, entry)) == Marker.INSTANCE;
}
public void putFeedEntry(Feed feed, FeedEntry entry) {
entryCache.put(buildKey(feed, entry), Marker.INSTANCE);
}
private String buildKey(Feed feed, FeedEntry entry) {
return String.format("%s:%s:%s", feed.getId(), entry.getGuid(),
entry.getUrl());
}
}