diff --git a/.gitignore b/.gitignore index 863410265..140bc3589 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,5 @@ pom.xml *.iws *.log .classpath -.project \ No newline at end of file +.project +.settings diff --git a/src/main/java/org/springframework/data/redis/connection/srp/SrpConnection.java b/src/main/java/org/springframework/data/redis/connection/srp/SrpConnection.java index 46fa598da..31bc92d55 100644 --- a/src/main/java/org/springframework/data/redis/connection/srp/SrpConnection.java +++ b/src/main/java/org/springframework/data/redis/connection/srp/SrpConnection.java @@ -36,6 +36,7 @@ import org.springframework.data.redis.connection.Subscription; import redis.client.RedisClient; import redis.client.RedisClient.Pipeline; import redis.client.RedisException; +import redis.reply.Reply; import com.google.common.base.Charsets; @@ -136,7 +137,7 @@ public class SrpConnection implements RedisConnection { pipeline.sort(key, sort, null, (Object[]) null); return null; } - return SrpUtils.toBytesList(client.sort(key, sort, null, (Object[]) null).data()); + return SrpUtils.toBytesList((Reply[]) client.sort(key, sort, null, (Object[]) null).data()); } catch (Exception ex) { throw convertSRAccessException(ex); } @@ -151,7 +152,7 @@ public class SrpConnection implements RedisConnection { pipeline.sort(key, sort, null, (Object[]) null); return null; } - return SrpUtils.toLong(client.sort(key, sort, null, (Object[]) null).data()); + return ((Long) client.sort(key, sort, null, (Object[]) null).data()); } catch (Exception ex) { throw convertSRAccessException(ex); } @@ -1252,10 +1253,10 @@ public class SrpConnection implements RedisConnection { public Boolean zAdd(byte[] key, double score, byte[] value) { try { if (isPipelined()) { - pipeline.zadd(key, score, value, null, null); + pipeline.zadd(new Object[] { key, score, value }); return null; } - return client.zadd(key, score, value, null, null).data() == 1; + return client.zadd(new Object[] { key, score, value }).data() == 1; } catch (Exception ex) { throw convertSRAccessException(ex); } @@ -1307,18 +1308,27 @@ public class SrpConnection implements RedisConnection { public Long zInterStore(byte[] destKey, byte[]... sets) { + + Object[] args = new Object[2+sets.length]; + + args[0] = destKey; + args[1] = sets.length; + int i = 2; + for (byte[] set : sets) { + args[i++] = set; + } + try { if (isQueueing()) { - pipeline.zinterstore(destKey, sets.length, (Object[]) sets); + pipeline.zinterstore(args); return null; } - return client.zinterstore(destKey, sets.length, (Object[]) sets).data(); + return client.zinterstore(args).data(); } catch (Exception ex) { throw convertSRAccessException(ex); } } - public Set zRange(byte[] key, long start, long end) { try { if (isPipelined()) { @@ -1534,7 +1544,7 @@ public class SrpConnection implements RedisConnection { pipeline.zrevrank(key, value); return null; } - return client.zrevrank(key, value).data(); + return (Long) client.zrevrank(key, value).data(); } catch (Exception ex) { throw convertSRAccessException(ex); } diff --git a/src/main/java/org/springframework/data/redis/connection/srp/SrpMessageListener.java b/src/main/java/org/springframework/data/redis/connection/srp/SrpMessageListener.java index 619438adc..0534ceb81 100644 --- a/src/main/java/org/springframework/data/redis/connection/srp/SrpMessageListener.java +++ b/src/main/java/org/springframework/data/redis/connection/srp/SrpMessageListener.java @@ -40,6 +40,10 @@ class SrpMessageListener implements ReplyListener { listener.onMessage(new DefaultMessage(channel, message), null); } + public void pmessage(byte[] pattern, byte[] channel, byte[] message) { + listener.onMessage(new DefaultMessage(channel, message), pattern); + } + public void psubscribed(byte[] arg0, int arg1) { } diff --git a/src/main/java/org/springframework/data/redis/connection/srp/SrpSubscription.java b/src/main/java/org/springframework/data/redis/connection/srp/SrpSubscription.java index 16b44803a..473122936 100644 --- a/src/main/java/org/springframework/data/redis/connection/srp/SrpSubscription.java +++ b/src/main/java/org/springframework/data/redis/connection/srp/SrpSubscription.java @@ -42,6 +42,7 @@ class SrpSubscription extends AbstractSubscription { protected void doClose() { client.unsubscribe((Object[]) null); client.punsubscribe((Object[]) null); + client.removeListener(this.listener); }