diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/DefaultSortParameters.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/DefaultSortParameters.java index de25bce3f..994142665 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/DefaultSortParameters.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/DefaultSortParameters.java @@ -15,6 +15,10 @@ */ package org.springframework.data.keyvalue.redis.connection; +import java.util.ArrayList; +import java.util.List; + + /** * Default implementation for {@link SortParameters}. @@ -25,7 +29,7 @@ public class DefaultSortParameters implements SortParameters { private byte[] byPattern; private Range limit; - private byte[] getPattern; + private final List getPattern = new ArrayList(4); private Order order; private Boolean alphabetic; @@ -56,13 +60,13 @@ public class DefaultSortParameters implements SortParameters { * @param order * @param alphabetic */ - public DefaultSortParameters(byte[] byPattern, Range limit, byte[] getPattern, Order order, Boolean alphabetic) { + public DefaultSortParameters(byte[] byPattern, Range limit, byte[][] getPattern, Order order, Boolean alphabetic) { super(); this.byPattern = byPattern; this.limit = limit; - this.getPattern = getPattern; this.order = order; this.alphabetic = alphabetic; + setGetPattern(getPattern); } @Override @@ -84,12 +88,20 @@ public class DefaultSortParameters implements SortParameters { } @Override - public byte[] getGetPattern() { - return getPattern; + public byte[][] getGetPattern() { + return getPattern.toArray(new byte[getPattern.size()][]); } - public void setGetPattern(byte[] getPattern) { - this.getPattern = getPattern; + public void addGetPattern(byte[] gPattern) { + getPattern.add(gPattern); + } + + public void setGetPattern(byte[][] gPattern) { + getPattern.clear(); + + for (byte[] bs : getPattern) { + getPattern.add(bs); + } } @Override @@ -130,7 +142,7 @@ public class DefaultSortParameters implements SortParameters { } public SortParameters get(byte[] pattern) { - setGetPattern(pattern); + addGetPattern(pattern); return this; } diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/SortParameters.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/SortParameters.java index 0fd65c0b3..ca69f3315 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/SortParameters.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/SortParameters.java @@ -80,7 +80,7 @@ public interface SortParameters { * * @return GET pattern. */ - byte[] getGetPattern(); + byte[][] getGetPattern(); /** * Returns the sorting limit (range or pagination). diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jedis/JedisUtils.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jedis/JedisUtils.java index ee83bd9bd..bdfe315cd 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jedis/JedisUtils.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jedis/JedisUtils.java @@ -161,7 +161,7 @@ public abstract class JedisUtils { jedisParams.by(params.getByPattern()); } - byte[] getPattern = params.getGetPattern(); + byte[][] getPattern = params.getGetPattern(); if (getPattern != null) { jedisParams.get(getPattern); } diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jredis/JredisUtils.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jredis/JredisUtils.java index 93ea31408..a41bd982a 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jredis/JredisUtils.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jredis/JredisUtils.java @@ -129,9 +129,12 @@ public abstract class JredisUtils { if (byPattern != null) { jredisSort.BY(decode(byPattern)); } - byte[] getPattern = params.getGetPattern(); - if (getPattern != null) { - jredisSort.GET(decode(getPattern)); + byte[][] getPattern = params.getGetPattern(); + + if (getPattern != null && getPattern.length > 0) { + for (byte[] bs : getPattern) { + jredisSort.GET(decode(bs)); + } } Range limit = params.getLimit(); if (limit != null) {