diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/support/atomic/RedisAtomicInteger.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/support/atomic/RedisAtomicInteger.java index bb4b19ba4..79e5b523e 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/support/atomic/RedisAtomicInteger.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/support/atomic/RedisAtomicInteger.java @@ -77,8 +77,10 @@ public class RedisAtomicInteger extends Number implements Serializable, BoundKey this.generalOps = redisTemplate; this.operations = generalOps.opsForValue(); - if (initialValue == null || this.operations.get(redisCounter) == null) { - set(0); + if (initialValue == null) { + if (this.operations.get(redisCounter) == null) { + set(0); + } } else { set(initialValue); diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/support/atomic/RedisAtomicLong.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/support/atomic/RedisAtomicLong.java index 5550b382d..9da634b3e 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/support/atomic/RedisAtomicLong.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/support/atomic/RedisAtomicLong.java @@ -77,8 +77,10 @@ public class RedisAtomicLong extends Number implements Serializable, BoundKeyOpe this.generalOps = redisTemplate; this.operations = generalOps.opsForValue(); - if (initialValue == null || this.operations.get(redisCounter) == null) { - set(0); + if (initialValue == null) { + if (this.operations.get(redisCounter) == null) { + set(0); + } } else { set(initialValue); diff --git a/spring-data-redis/src/test/java/org/springframework/data/keyvalue/redis/support/atomic/RedisAtomicTests.java b/spring-data-redis/src/test/java/org/springframework/data/keyvalue/redis/support/atomic/RedisAtomicTests.java index 25c0a93dc..d69d19add 100644 --- a/spring-data-redis/src/test/java/org/springframework/data/keyvalue/redis/support/atomic/RedisAtomicTests.java +++ b/spring-data-redis/src/test/java/org/springframework/data/keyvalue/redis/support/atomic/RedisAtomicTests.java @@ -105,4 +105,11 @@ public class RedisAtomicTests { int delta = 5; assertEquals(delta, intCounter.addAndGet(delta)); } + + @Test + public void testReadExistingValue() throws Exception { + longCounter.set(5); + RedisAtomicLong keyCopy = new RedisAtomicLong(longCounter.getKey(), factory); + assertEquals(longCounter.get(), keyCopy.get()); + } } \ No newline at end of file