protected CacheResult do_PUT_ALL()

in jetcache-support/jetcache-redis/src/main/java/com/alicp/jetcache/redis/RedisCache.java [294:323]


    protected CacheResult do_PUT_ALL(Map<? extends K, ? extends V> map, long expireAfterWrite, TimeUnit timeUnit) {
        if (map == null || map.isEmpty()) {
            return CacheResult.SUCCESS_WITHOUT_MSG;
        }
        try {
            StringBinaryCommands writeCommands = (StringBinaryCommands) writeCommands();
            return this.<StringBinaryCommands, StringPipelineBinaryCommands, CacheResult>doWithPipeline(writeCommands, true, pipeline -> {
                int failCount = 0;
                List<Response<String>> responses = new ArrayList<>();
                for (Map.Entry<? extends K, ? extends V> en : map.entrySet()) {
                    CacheValueHolder<V> holder = new CacheValueHolder(en.getValue(), timeUnit.toMillis(expireAfterWrite));
                    Response<String> resp = pipeline.psetex(buildKey(en.getKey()), timeUnit.toMillis(expireAfterWrite), valueEncoder.apply(holder));
                    responses.add(resp);
                }

                sync(pipeline);

                for (Response<String> resp : responses) {
                    if (!"OK".equals(resp.get())) {
                        failCount++;
                    }
                }
                return failCount == 0 ? CacheResult.SUCCESS_WITHOUT_MSG :
                        failCount == map.size() ? CacheResult.FAIL_WITHOUT_MSG : CacheResult.PART_SUCCESS_WITHOUT_MSG;
            });
        } catch (Exception ex) {
            logError("PUT_ALL", "map(" + map.size() + ")", ex);
            return new CacheResult(ex);
        }
    }