Merge pull request #985 from sulake/feature/map_cache_max_size

Add support for bounded Redisson map cache (max size configuration).
pull/1026/head
Nikita Koksharov 8 years ago committed by GitHub
commit a38bbe7eb5

File diff suppressed because it is too large Load Diff

@ -49,6 +49,7 @@ public class MapOptions<K, V> {
private MapWriter<K, V> writer; private MapWriter<K, V> writer;
private WriteMode writeMode = WriteMode.WRITE_THROUGH; private WriteMode writeMode = WriteMode.WRITE_THROUGH;
private int writeBehindThreads = 1; private int writeBehindThreads = 1;
private int maxSize = 0;
protected MapOptions() { protected MapOptions() {
} }
@ -135,4 +136,19 @@ public class MapOptions<K, V> {
return loader; return loader;
} }
/**
* Sets max size of the map.
* <p>
* Currently only RedissonMapCache is supported.
*
* @param maxSize - max size
* @return MapOptions instance
*/
public MapOptions<K, V> maxSize(int maxSize) {
this.maxSize = maxSize;
return this;
}
public int getMaxSize() {
return maxSize;
}
} }

@ -214,6 +214,31 @@ public class RedissonMapCacheTest extends BaseMapTest {
assertThat(store).isEqualTo(expected); assertThat(store).isEqualTo(expected);
} }
@Test
public void testFastPutMaxSize() {
final int maxSize = 2;
Map<String, String> store = new LinkedHashMap<String, String>() {
@Override
protected boolean removeEldestEntry(Entry<String, String> eldest) {
return size() > maxSize;
}
};
MapOptions<String, String> options = MapOptions.<String, String>defaults().writer(createMapWriter(store));
options.maxSize(maxSize);
RMapCache<String, String> map = redisson.getMapCache("test", options);
map.fastPut("1", "11", 10, TimeUnit.SECONDS);
map.fastPut("2", "22", 10, TimeUnit.SECONDS);
map.fastPut("3", "33", 10, TimeUnit.SECONDS);
assertThat(map.size()).isEqualTo(maxSize);
Map<String, String> expected = new HashMap<>();
expected.put("2", "22");
expected.put("3", "33");
assertThat(store).isEqualTo(expected);
}
@Test @Test
public void testOrdering() { public void testOrdering() {
Map<String, String> map = new LinkedHashMap<String, String>(); Map<String, String> map = new LinkedHashMap<String, String>();

Loading…
Cancel
Save