in jetcache-support/jetcache-redis-lettuce/src/main/java/com/alicp/jetcache/redis/lettuce/RedisLettuceCache.java [130:158]
protected CacheResult do_PUT_ALL(Map<? extends K, ? extends V> map, long expireAfterWrite, TimeUnit timeUnit) {
try {
CompletionStage<Integer> future = CompletableFuture.completedFuture(0);
for (Map.Entry<? extends K, ? extends V> en : map.entrySet()) {
CacheValueHolder<V> holder = new CacheValueHolder(en.getValue(), timeUnit.toMillis(expireAfterWrite));
RedisFuture<String> resp = stringAsyncCommands.psetex(buildKey(en.getKey()), timeUnit.toMillis(expireAfterWrite), valueEncoder.apply(holder));
future = future.thenCombine(resp, (failCount, respStr) -> "OK".equals(respStr) ? failCount : failCount + 1);
}
CacheResult result = new CacheResult(future.handle((failCount, ex) -> {
if (ex != null) {
JetCacheExecutor.defaultExecutor().execute(() -> logError("PUT_ALL", "map(" + map.size() + ")", ex));
return new ResultData(ex);
} else {
if (failCount == 0) {
return new ResultData(CacheResultCode.SUCCESS, null, null);
} else if (failCount == map.size()) {
return new ResultData(CacheResultCode.FAIL, null, null);
} else {
return new ResultData(CacheResultCode.PART_SUCCESS, null, null);
}
}
}));
setTimeout(result);
return result;
} catch (Exception ex) {
logError("PUT_ALL", "map(" + map.size() + ")", ex);
return new CacheResult(ex);
}
}