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;
public class Client extends Connection {
public enum LIST_POSITION {
BEFORE, AFTER
}
private boolean isInMulti;
public boolean isInMulti() {
@@ -587,4 +591,9 @@ public class Client extends Connection {
public void echo(String 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.Set;
import redis.clients.jedis.Client.LIST_POSITION;
import redis.clients.util.ShardInfo;
public class Jedis {
@@ -831,4 +832,10 @@ public class Jedis {
client.echo(string);
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.Set;
import redis.clients.jedis.Client.LIST_POSITION;
import redis.clients.util.Hashing;
import redis.clients.util.ShardInfo;
import redis.clients.util.Sharded;
@@ -354,4 +355,11 @@ public class ShardedJedis extends Sharded<Jedis> {
protected Jedis create(ShardInfo 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 redis.clients.jedis.Client;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisException;
@@ -270,4 +271,26 @@ public class ListCommandsTest extends JedisCommandTestBase {
status = jedis.rpushx("foo", "b");
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);
}
}