From 8f8cfcc6594e5f0f51131ac2537dd239b28c370e Mon Sep 17 00:00:00 2001 From: Jura Date: Tue, 4 Feb 2025 19:11:55 +0200 Subject: [PATCH 1/2] Add ability to set eviction mode for Cache Config Signed-off-by: Jura --- .../redisson/spring/cache/CacheConfig.java | 23 ++++++++++++++++--- .../cache/RedissonSpringCacheManager.java | 2 +- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/redisson/src/main/java/org/redisson/spring/cache/CacheConfig.java b/redisson/src/main/java/org/redisson/spring/cache/CacheConfig.java index 5af54eda3..3d7f44202 100644 --- a/redisson/src/main/java/org/redisson/spring/cache/CacheConfig.java +++ b/redisson/src/main/java/org/redisson/spring/cache/CacheConfig.java @@ -15,6 +15,7 @@ */ package org.redisson.spring.cache; +import org.redisson.api.EvictionMode; import org.redisson.api.map.event.MapEntryListener; import java.io.File; @@ -39,7 +40,9 @@ public class CacheConfig { private long maxIdleTime; private int maxSize; - + + private EvictionMode evictionMode = EvictionMode.LRU; + private final List listeners = new ArrayList<>(); /** @@ -79,14 +82,13 @@ public class CacheConfig { public void setTTL(long ttl) { this.ttl = ttl; } - public int getMaxSize() { return maxSize; } /** - * Set max size of map. Superfluous elements are evicted using LRU algorithm. + * Set max size of map. * * @param maxSize - max size * If 0 the cache is unbounded (default). @@ -95,6 +97,21 @@ public class CacheConfig { this.maxSize = maxSize; } + public EvictionMode getEvictionMode() { + return evictionMode; + } + + /** + * Set the eviction mode of the map. Superfluous elements are evicted using LRU or LFU algorithm. + * + * @param evictionMode - eviction mode (LRU, LFU) + * @return + */ + public CacheConfig setEvictionMode(EvictionMode evictionMode) { + this.evictionMode = evictionMode; + return this; + } + public long getMaxIdleTime() { return maxIdleTime; } diff --git a/redisson/src/main/java/org/redisson/spring/cache/RedissonSpringCacheManager.java b/redisson/src/main/java/org/redisson/spring/cache/RedissonSpringCacheManager.java index 9337dc0a2..9cca0757e 100644 --- a/redisson/src/main/java/org/redisson/spring/cache/RedissonSpringCacheManager.java +++ b/redisson/src/main/java/org/redisson/spring/cache/RedissonSpringCacheManager.java @@ -269,7 +269,7 @@ public class RedissonSpringCacheManager implements CacheManager, ResourceLoaderA if (oldCache != null) { cache = oldCache; } else { - map.setMaxSize(config.getMaxSize()); + map.setMaxSize(config.getMaxSize(), config.getEvictionMode()); for (MapEntryListener listener : config.getListeners()) { map.addListener(listener); } From b01e26fd7bcf295cd4d9a75c01cb11182d39eda0 Mon Sep 17 00:00:00 2001 From: Jura Date: Thu, 6 Feb 2025 11:18:25 +0200 Subject: [PATCH 2/2] Update comment for setMaxSize Signed-off-by: Jura --- .../src/main/java/org/redisson/spring/cache/CacheConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/redisson/src/main/java/org/redisson/spring/cache/CacheConfig.java b/redisson/src/main/java/org/redisson/spring/cache/CacheConfig.java index 3d7f44202..76a6ba01f 100644 --- a/redisson/src/main/java/org/redisson/spring/cache/CacheConfig.java +++ b/redisson/src/main/java/org/redisson/spring/cache/CacheConfig.java @@ -88,7 +88,7 @@ public class CacheConfig { } /** - * Set max size of map. + * Set max size of map. Superfluous elements are evicted using LRU algorithm. * * @param maxSize - max size * If 0 the cache is unbounded (default).