From eaffa54025a58d034c8d71c1018e96ce7e35fb65 Mon Sep 17 00:00:00 2001 From: Costin Leau Date: Tue, 9 Nov 2010 18:18:05 +0200 Subject: [PATCH] + add hsetNX to hash commands + add jedis and jredis impl for hsetNx --- .../redis/connection/RedisHashCommands.java | 2 ++ .../redis/connection/jedis/JedisConnection.java | 13 +++++++++++++ .../redis/connection/jredis/JredisConnection.java | 5 +++++ 3 files changed, 20 insertions(+) diff --git a/spring-datastore-redis/src/main/java/org/springframework/datastore/redis/connection/RedisHashCommands.java b/spring-datastore-redis/src/main/java/org/springframework/datastore/redis/connection/RedisHashCommands.java index 559e3bf67..e51cf5ddd 100644 --- a/spring-datastore-redis/src/main/java/org/springframework/datastore/redis/connection/RedisHashCommands.java +++ b/spring-datastore-redis/src/main/java/org/springframework/datastore/redis/connection/RedisHashCommands.java @@ -34,6 +34,8 @@ public interface RedisHashCommands { Boolean hSet(String key, String field, String value); + Boolean hSetNX(String key, String field, String value); + String hGet(String key, String field); List hMGet(String key, String... fields); diff --git a/spring-datastore-redis/src/main/java/org/springframework/datastore/redis/connection/jedis/JedisConnection.java b/spring-datastore-redis/src/main/java/org/springframework/datastore/redis/connection/jedis/JedisConnection.java index 9cc25932c..8e563c305 100644 --- a/spring-datastore-redis/src/main/java/org/springframework/datastore/redis/connection/jedis/JedisConnection.java +++ b/spring-datastore-redis/src/main/java/org/springframework/datastore/redis/connection/jedis/JedisConnection.java @@ -329,6 +329,19 @@ public class JedisConnection implements RedisConnection { } } + @Override + public Boolean hSetNX(String key, String field, String value) { + try { + if (isQueueing()) { + transaction.hsetnx(key, field, value); + return null; + } + return JedisUtils.convertCodeReply(jedis.hsetnx(key, field, value)); + } catch (Exception ex) { + throw convertJedisAccessException(ex); + } + } + @Override public String get(String key) { try { diff --git a/spring-datastore-redis/src/main/java/org/springframework/datastore/redis/connection/jredis/JredisConnection.java b/spring-datastore-redis/src/main/java/org/springframework/datastore/redis/connection/jredis/JredisConnection.java index 7625eeb6c..b4a2f0bdb 100644 --- a/spring-datastore-redis/src/main/java/org/springframework/datastore/redis/connection/jredis/JredisConnection.java +++ b/spring-datastore-redis/src/main/java/org/springframework/datastore/redis/connection/jredis/JredisConnection.java @@ -788,6 +788,11 @@ public class JredisConnection implements RedisConnection { } } + @Override + public Boolean hSetNX(String key, String field, String value) { + throw new UnsupportedOperationException(); + } + @Override public List hVals(String key) { try {