Interface RCollectionMapReduce<VIn,​KOut,​VOut>

  • Type Parameters:
    VIn - input value
    KOut - output key
    VOut - output value
    All Superinterfaces:
    All Known Implementing Classes:

    public interface RCollectionMapReduce<VIn,​KOut,​VOut>
    extends RMapReduceExecutor<VIn,​KOut,​VOut>
    MapReduce allows to process large amount of data stored in RSet, RList, RSetCache, RScoredSortedSet, RSortedSet and others using Mapper, Reducer and/or Collator tasks launched across Redisson Nodes.

    Usage example:

       public class WordMapper implements RCollectionMapper<String, String, Integer> {
           public void map(String value, RCollector<String, Integer> collector) {
               String[] words = value.split("[^a-zA-Z]");
               for (String word : words) {
                   collector.emit(word, 1);
       public class WordReducer implements RReducer<String, Integer> {
           public Integer reduce(String reducedKey, Iterator<Integer> iter) {
               int sum = 0;
               while (iter.hasNext()) {
                  Integer i = (Integer);
                  sum += i;
               return sum;
       public class WordCollator implements RCollator<String, Integer, Integer> {
           public Integer collate(Map<String, Integer> resultMap) {
               int result = 0;
               for (Integer count : resultMap.values()) {
                   result += count;
               return result;
       RList<String> list = redisson.getList("myWords");
       Map<String, Integer> wordsCount = list.<String, Integer>mapReduce()
         .mapper(new WordMapper())
         .reducer(new WordReducer())
       Integer totalCount = list.<String, Integer>mapReduce()
         .mapper(new WordMapper())
         .reducer(new WordReducer())
         .execute(new WordCollator());
    Nikita Koksharov