Implemented linsert

This commit is contained in:
Jonathan Leibiusky
2010-09-15 17:17:24 -03:00
parent e4d5c182d0
commit 3d1546131a
4 changed files with 47 additions and 0 deletions

View File

@@ -5,6 +5,10 @@ import java.util.List;
import java.util.Map; import java.util.Map;
public class Client extends Connection { public class Client extends Connection {
public enum LIST_POSITION {
BEFORE, AFTER
}
private boolean isInMulti; private boolean isInMulti;
public boolean isInMulti() { public boolean isInMulti() {
@@ -587,4 +591,9 @@ public class Client extends Connection {
public void echo(String string) { public void echo(String string) {
sendCommand("ECHO", string); sendCommand("ECHO", string);
} }
public void linsert(String key, LIST_POSITION where, String pivot,
String value) {
sendCommand("LINSERT", key, where.toString(), pivot, value);
}
} }

View File

@@ -10,6 +10,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import redis.clients.jedis.Client.LIST_POSITION;
import redis.clients.util.ShardInfo; import redis.clients.util.ShardInfo;
public class Jedis { public class Jedis {
@@ -831,4 +832,10 @@ public class Jedis {
client.echo(string); client.echo(string);
return client.getBulkReply(); return client.getBulkReply();
} }
public Integer linsert(String key, LIST_POSITION where, String pivot,
String value) {
client.linsert(key, where, pivot, value);
return client.getIntegerReply();
}
} }

View File

@@ -5,6 +5,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import redis.clients.jedis.Client.LIST_POSITION;
import redis.clients.util.Hashing; import redis.clients.util.Hashing;
import redis.clients.util.ShardInfo; import redis.clients.util.ShardInfo;
import redis.clients.util.Sharded; import redis.clients.util.Sharded;
@@ -354,4 +355,11 @@ public class ShardedJedis extends Sharded<Jedis> {
protected Jedis create(ShardInfo shard) { protected Jedis create(ShardInfo shard) {
return new Jedis(shard); return new Jedis(shard);
} }
public Integer linsert(String key, LIST_POSITION where, String pivot,
String value) {
Jedis j = getShard(key);
return j.linsert(key, where, pivot, value);
}
} }

View File

@@ -5,6 +5,7 @@ import java.util.List;
import org.junit.Test; import org.junit.Test;
import redis.clients.jedis.Client;
import redis.clients.jedis.Jedis; import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisException; import redis.clients.jedis.JedisException;
@@ -270,4 +271,26 @@ public class ListCommandsTest extends JedisCommandTestBase {
status = jedis.rpushx("foo", "b"); status = jedis.rpushx("foo", "b");
assertEquals(2, status); assertEquals(2, status);
} }
@Test
public void linsert() {
int status = jedis.linsert("foo", Client.LIST_POSITION.BEFORE, "bar",
"car");
assertEquals(0, status);
jedis.lpush("foo", "a");
status = jedis.linsert("foo", Client.LIST_POSITION.AFTER, "a", "b");
assertEquals(2, status);
List<String> actual = jedis.lrange("foo", 0, 100);
List<String> expected = new ArrayList<String>();
expected.add("a");
expected.add("b");
assertEquals(expected, actual);
status = jedis
.linsert("foo", Client.LIST_POSITION.BEFORE, "bar", "car");
assertEquals(-1, status);
}
} }