diff --git a/src/main/java/org/springframework/data/redis/cache/DefaultRedisCacheWriter.java b/src/main/java/org/springframework/data/redis/cache/DefaultRedisCacheWriter.java index 3839f336b6..300853925a 100644 --- a/src/main/java/org/springframework/data/redis/cache/DefaultRedisCacheWriter.java +++ b/src/main/java/org/springframework/data/redis/cache/DefaultRedisCacheWriter.java @@ -45,6 +45,7 @@ * * @author Christoph Strobl * @author Mark Paluch + * @author André Prata * @since 2.0 */ class DefaultRedisCacheWriter implements RedisCacheWriter { @@ -153,12 +154,15 @@ public byte[] putIfAbsent(String name, byte[] key, byte[] value, @Nullable Durat } try { - if (connection.setNX(key, value)) { - if (shouldExpireWithin(ttl)) { - connection.pExpire(key, ttl.toMillis()); - } + boolean put; + if (shouldExpireWithin(ttl)) { + put = connection.set(key, value, Expiration.milliseconds(ttl.toMillis()), SetOption.ifAbsent()); + } else { + put = connection.setNX(key, value); + } + if (put) { statistics.incPuts(name); return null; }