• 9.5.1 介绍
    • 1. RMapper 映射器接口适用于映射(Map)类,它用来把映射(Map)中的每个元素转换为另一个作为归纳(Reduce)处理用的键值对。
    • 2. RCollectionMapper 映射器接口仅适用于集合(Collection)类型的对象,它用来把集合(Collection)中的元素转换成一组作为归纳(Reduce)处理用的键值对。
    • 3. RReducer 归纳器接口用来将上面这些,由映射器生成的键值对列表进行归纳整理。
    • 4. RCollator 收集器接口用来把归纳整理以后的结果化简为单一一个对象。

    9.5.1 介绍

    Redisson提供了通过映射归纳(MapReduce)编程模式来处理储存在Redis环境里的大量数据的服务。这个想法来至于其他的类似实现方式和谷歌发表的研究。所有 映射(Map)归纳(Reduce) 阶段中的任务都是被分配到各个独立节点(Redisson Node)里并行执行的。以下所有接口均支持映射归纳(MapReduce)功能: RMapRMapCacheRLocalCachedMapRSetRSetCacheRListRSortedSetRScoredSortedSetRQueueRBlockingQueueRDequeRBlockingDequeRPriorityQueueRPriorityDeque

    映射归纳(MapReduce)的功能是通过RMapperRCollectionMapperRReducerRCollator 这几个接口实现的。

    1. RMapper 映射器接口适用于映射(Map)类,它用来把映射(Map)中的每个元素转换为另一个作为归纳(Reduce)处理用的键值对。

    1. public interface RMapper<KIn, VIn, KOut, VOut> extends Serializable {
    2. void map(KIn key, VIn value, RCollector<KOut, VOut> collector);
    3. }

    2. RCollectionMapper 映射器接口仅适用于集合(Collection)类型的对象,它用来把集合(Collection)中的元素转换成一组作为归纳(Reduce)处理用的键值对。

    1. public interface RCollectionMapper<VIn, KOut, VOut> extends Serializable {
    2. void map(VIn value, RCollector<KOut, VOut> collector);
    3. }

    3. RReducer 归纳器接口用来将上面这些,由映射器生成的键值对列表进行归纳整理。

    1. public interface RReducer<K, V> extends Serializable {
    2. V reduce(K reducedKey, Iterator<V> values);
    3. }

    4. RCollator 收集器接口用来把归纳整理以后的结果化简为单一一个对象。

    1. public interface RCollator<K, V, R> extends Serializable {
    2. R collate(Map<K, V> resultMap);
    3. }

    以上每个阶段的任务都可以用@RInject注解的方式来获取RedissonClient实例:

    1. public class WordMapper implements RMapper<String, String, String, Integer> {
    2. @RInject
    3. private RedissonClient redissonClient;
    4. @Override
    5. public void map(String key, String value, RCollector<String, Integer> collector) {
    6. // ...
    7. redissonClient.getAtomicLong("mapInvocations").incrementAndGet();
    8. }
    9. }