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; package com.commafeed.backend.cache;
import java.util.List; import java.util.List;
import java.util.Set;
import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.codec.digest.DigestUtils;
@@ -14,7 +15,7 @@ import com.commafeed.frontend.model.UnreadCount;
public abstract class CacheService { public abstract class CacheService {
// feed entries for faster refresh // 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); 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.Collections;
import java.util.List; import java.util.List;
import java.util.Set;
import com.commafeed.backend.model.Feed; import com.commafeed.backend.model.Feed;
import com.commafeed.backend.model.FeedSubscription; import com.commafeed.backend.model.FeedSubscription;
@@ -12,8 +13,8 @@ import com.commafeed.frontend.model.UnreadCount;
public class NoopCacheService extends CacheService { public class NoopCacheService extends CacheService {
@Override @Override
public List<String> getLastEntries(Feed feed) { public Set<String> getLastEntries(Feed feed) {
return Collections.emptyList(); return Collections.emptySet();
} }
@Override @Override

View File

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

View File

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