From d4d954effb818546ee3a7f88ca927b2819da1012 Mon Sep 17 00:00:00 2001 From: Nikita Date: Thu, 9 Jun 2016 13:46:26 +0300 Subject: [PATCH] MultimapCache added to RBatch object. #525 --- src/main/java/org/redisson/Redisson.java | 2 +- src/main/java/org/redisson/RedissonBatch.java | 22 +++++++++ src/main/java/org/redisson/core/RBatch.java | 46 +++++++++++++++++++ 3 files changed, 69 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/redisson/Redisson.java b/src/main/java/org/redisson/Redisson.java index 4d6f929ab..87f2e99f2 100755 --- a/src/main/java/org/redisson/Redisson.java +++ b/src/main/java/org/redisson/Redisson.java @@ -24,6 +24,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.UUID; +import java.util.concurrent.TimeUnit; import org.redisson.api.RedissonReactiveClient; import org.redisson.client.codec.Codec; @@ -75,7 +76,6 @@ import org.redisson.core.RSortedSet; import org.redisson.core.RTopic; import io.netty.util.concurrent.Future; -import java.util.concurrent.TimeUnit; /** * Main infrastructure class allows to get access diff --git a/src/main/java/org/redisson/RedissonBatch.java b/src/main/java/org/redisson/RedissonBatch.java index 11a956eb8..84ff7b75f 100644 --- a/src/main/java/org/redisson/RedissonBatch.java +++ b/src/main/java/org/redisson/RedissonBatch.java @@ -36,6 +36,7 @@ import org.redisson.core.RListAsync; import org.redisson.core.RMapAsync; import org.redisson.core.RMapCacheAsync; import org.redisson.core.RMultimapAsync; +import org.redisson.core.RMultimapCacheAsync; import org.redisson.core.RQueueAsync; import org.redisson.core.RScoredSortedSetAsync; import org.redisson.core.RScriptAsync; @@ -260,5 +261,26 @@ public class RedissonBatch implements RBatch { public RGeoAsync getGeo(String name, Codec codec) { return new RedissonGeo(codec, executorService, name); } + + @Override + public RMultimapCacheAsync getSetMultimapCache(String name) { + return new RedissonSetMultimapCache(evictionScheduler, executorService, name); + } + + @Override + public RMultimapCacheAsync getSetMultimapCache(String name, Codec codec) { + return new RedissonSetMultimapCache(evictionScheduler, codec, executorService, name); + } + + @Override + public RMultimapCacheAsync getListMultimapCache(String name) { + return new RedissonListMultimapCache(evictionScheduler, executorService, name); + } + + @Override + public RMultimapCacheAsync getListMultimapCache(String name, Codec codec) { + return new RedissonListMultimapCache(evictionScheduler, codec, executorService, name); + } + } diff --git a/src/main/java/org/redisson/core/RBatch.java b/src/main/java/org/redisson/core/RBatch.java index b573811cf..5790b18a0 100644 --- a/src/main/java/org/redisson/core/RBatch.java +++ b/src/main/java/org/redisson/core/RBatch.java @@ -73,6 +73,29 @@ public interface RBatch { */ RMultimapAsync getSetMultimap(String name, Codec codec); + /** + * Returns Set based Multimap instance by name. + * Supports key-entry eviction with a given TTL value. + * + *

If eviction is not required then it's better to use regular map {@link #getSetMultimap(String)}.

+ * + * @param name + * @return + */ + RMultimapCacheAsync getSetMultimapCache(String name); + + /** + * Returns Set based Multimap instance by name + * using provided codec for both map keys and values. + * Supports key-entry eviction with a given TTL value. + * + *

If eviction is not required then it's better to use regular map {@link #getSetMultimap(String, Codec)}.

+ * + * @param name + * @return + */ + RMultimapCacheAsync getSetMultimapCache(String name, Codec codec); + /** * Returns set-based cache instance by name. * Uses map (value_hash, value) under the hood for minimal memory consumption. @@ -172,6 +195,29 @@ public interface RBatch { */ RMultimapAsync getListMultimap(String name, Codec codec); + /** + * Returns List based Multimap instance by name. + * Supports key-entry eviction with a given TTL value. + * + *

If eviction is not required then it's better to use regular map {@link #getSetMultimap(String)}.

+ * + * @param name + * @return + */ + RMultimapAsync getListMultimapCache(String name); + + /** + * Returns List based Multimap instance by name + * using provided codec for both map keys and values. + * Supports key-entry eviction with a given TTL value. + * + *

If eviction is not required then it's better to use regular map {@link #getSetMultimap(String, Codec)}.

+ * + * @param name + * @return + */ + RMultimapAsync getListMultimapCache(String name, Codec codec); + /** * Returns map instance by name. *