diff --git a/src/main/java/org/springframework/data/redis/core/RedisOperations.java b/src/main/java/org/springframework/data/redis/core/RedisOperations.java index 6f05e830d..df88d966c 100644 --- a/src/main/java/org/springframework/data/redis/core/RedisOperations.java +++ b/src/main/java/org/springframework/data/redis/core/RedisOperations.java @@ -159,10 +159,10 @@ public interface RedisOperations { * Delete given {@code key}. * * @param key must not be {@literal null}. - * @return The number of keys that were removed. + * @return {@literal true} if the key was removed. * @see Redis Documentation: DEL */ - void delete(K key); + Boolean delete(K key); /** * Delete given {@code keys}. @@ -171,7 +171,7 @@ public interface RedisOperations { * @return The number of keys that were removed. * @see Redis Documentation: DEL */ - void delete(Collection keys); + Long delete(Collection keys); /** * Determine the type stored at {@code key}. diff --git a/src/main/java/org/springframework/data/redis/core/RedisTemplate.java b/src/main/java/org/springframework/data/redis/core/RedisTemplate.java index bf1eaf2e9..191b5d933 100644 --- a/src/main/java/org/springframework/data/redis/core/RedisTemplate.java +++ b/src/main/java/org/springframework/data/redis/core/RedisTemplate.java @@ -692,14 +692,13 @@ public class RedisTemplate extends RedisAccessor implements RedisOperation * @see org.springframework.data.redis.core.RedisOperations#delete(java.lang.Object) */ @Override - public void delete(K key) { + public Boolean delete(K key) { byte[] rawKey = rawKey(key); - execute(connection -> { - connection.del(rawKey); - return null; - }, true); + Long result = execute(connection -> connection.del(rawKey), true); + + return result != null && result.intValue() == 1; } /* @@ -707,18 +706,15 @@ public class RedisTemplate extends RedisAccessor implements RedisOperation * @see org.springframework.data.redis.core.RedisOperations#delete(java.util.Collection) */ @Override - public void delete(Collection keys) { + public Long delete(Collection keys) { if (CollectionUtils.isEmpty(keys)) { - return; + return 0L; } byte[][] rawKeys = rawKeys(keys); - execute(connection -> { - connection.del(rawKeys); - return null; - }, true); + return execute(connection -> connection.del(rawKeys), true); } /* diff --git a/src/test/java/org/springframework/data/redis/core/RedisTemplateTests.java b/src/test/java/org/springframework/data/redis/core/RedisTemplateTests.java index b6e9ff037..886b3a2ff 100644 --- a/src/test/java/org/springframework/data/redis/core/RedisTemplateTests.java +++ b/src/test/java/org/springframework/data/redis/core/RedisTemplateTests.java @@ -387,7 +387,7 @@ public class RedisTemplateTests { V value1 = valueFactory.instance(); redisTemplate.opsForValue().set(key1, value1); assertTrue(redisTemplate.hasKey(key1)); - redisTemplate.delete(key1); + assertTrue(redisTemplate.delete(key1)); assertFalse(redisTemplate.hasKey(key1)); } @@ -402,7 +402,7 @@ public class RedisTemplateTests { List keys = new ArrayList<>(); keys.add(key1); keys.add(key2); - redisTemplate.delete(keys); + assertEquals(2L, redisTemplate.delete(keys).longValue()); assertFalse(redisTemplate.hasKey(key1)); assertFalse(redisTemplate.hasKey(key2)); }