improve lookup by using a set because we only use contains()

This commit is contained in:
Athou
2024-01-07 13:38:15 +01:00
parent 7b335e2fd4
commit 5fec4a4c5f
4 changed files with 9 additions and 10 deletions

View File

@@ -1,6 +1,7 @@
package com.commafeed.backend.cache;
import java.util.List;
import java.util.Set;
import org.apache.commons.codec.digest.DigestUtils;
@@ -14,7 +15,7 @@ import com.commafeed.frontend.model.UnreadCount;
public abstract class CacheService {
// feed entries for faster refresh
public abstract List<String> getLastEntries(Feed feed);
public abstract Set<String> getLastEntries(Feed feed);
public abstract void setLastEntries(Feed feed, List<String> entries);

View File

@@ -2,6 +2,7 @@ package com.commafeed.backend.cache;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import com.commafeed.backend.model.Feed;
import com.commafeed.backend.model.FeedSubscription;
@@ -12,8 +13,8 @@ import com.commafeed.frontend.model.UnreadCount;
public class NoopCacheService extends CacheService {
@Override
public List<String> getLastEntries(Feed feed) {
return Collections.emptyList();
public Set<String> getLastEntries(Feed feed) {
return Collections.emptySet();
}
@Override

View File

@@ -1,6 +1,5 @@
package com.commafeed.backend.cache;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;
@@ -29,14 +28,11 @@ public class RedisCacheService extends CacheService {
private final JedisPool pool;
@Override
public List<String> getLastEntries(Feed feed) {
List<String> list = new ArrayList<>();
public Set<String> getLastEntries(Feed feed) {
try (Jedis jedis = pool.getResource()) {
String key = buildRedisEntryKey(feed);
Set<String> members = jedis.smembers(key);
list.addAll(members);
return jedis.smembers(key);
}
return list;
}
@Override

View File

@@ -5,6 +5,7 @@ import java.util.Arrays;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
@@ -121,7 +122,7 @@ public class FeedRefreshUpdater implements Managed {
boolean insertedAtLeastOneEntry = false;
if (!entries.isEmpty()) {
List<String> lastEntries = cache.getLastEntries(feed);
Set<String> lastEntries = cache.getLastEntries(feed);
List<String> currentEntries = new ArrayList<>();
List<FeedSubscription> subscriptions = null;