From 3b6e35f5126957174a5271e41d9d27b155fb64d2 Mon Sep 17 00:00:00 2001 From: Nikita Date: Wed, 30 Dec 2015 14:48:12 +0300 Subject: [PATCH] RMap.putIfAbsent optimization --- src/main/java/org/redisson/RedissonMap.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/org/redisson/RedissonMap.java b/src/main/java/org/redisson/RedissonMap.java index ac7b0b0f6..25ccf0161 100644 --- a/src/main/java/org/redisson/RedissonMap.java +++ b/src/main/java/org/redisson/RedissonMap.java @@ -194,8 +194,7 @@ public class RedissonMap extends RedissonExpirable implements RMap { @Override public Future putIfAbsentAsync(K key, V value) { return commandExecutor.evalWriteAsync(getName(), codec, EVAL_PUT, - "if redis.call('hexists', KEYS[1], ARGV[1]) == 0 then " - + "redis.call('hset', KEYS[1], ARGV[1], ARGV[2]); " + "if redis.call('hsetnx', KEYS[1], ARGV[1], ARGV[2]) == 1 then " + "return nil " + "else " + "return redis.call('hget', KEYS[1], ARGV[1]) "