add brpoplpush
This commit is contained in:
@@ -627,4 +627,9 @@ public class BinaryClient extends Connection {
|
|||||||
public void debug(final DebugParams params) {
|
public void debug(final DebugParams params) {
|
||||||
sendCommand(DEBUG, params.getCommand());
|
sendCommand(DEBUG, params.getCommand());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void brpoplpush(final byte[] source, final byte[] destination,
|
||||||
|
final int timeout) {
|
||||||
|
sendCommand(BRPOPLPUSH, source, destination, toByteArray(timeout));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -2876,4 +2876,19 @@ public class BinaryJedis implements BinaryJedisCommands {
|
|||||||
public Client getClient() {
|
public Client getClient() {
|
||||||
return client;
|
return client;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pop a value from a list, push it to another list and return it; or block
|
||||||
|
* until one is available
|
||||||
|
*
|
||||||
|
* @param source
|
||||||
|
* @param destination
|
||||||
|
* @param timeout
|
||||||
|
* @return the element
|
||||||
|
*/
|
||||||
|
public String brpoplpush(byte[] source, byte[] destination, int timeout) {
|
||||||
|
client.brpoplpush(source, destination, timeout);
|
||||||
|
return client.getBulkReply();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -501,4 +501,9 @@ public class Client extends BinaryClient implements Commands {
|
|||||||
linsert(SafeEncoder.encode(key), where, SafeEncoder.encode(pivot),
|
linsert(SafeEncoder.encode(key), where, SafeEncoder.encode(pivot),
|
||||||
SafeEncoder.encode(value));
|
SafeEncoder.encode(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void brpoplpush(String source, String destination, int timeout) {
|
||||||
|
brpoplpush(SafeEncoder.encode(source), SafeEncoder.encode(destination),
|
||||||
|
timeout);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -2581,4 +2581,18 @@ public class Jedis extends BinaryJedis implements JedisCommands {
|
|||||||
client.linsert(key, where, pivot, value);
|
client.linsert(key, where, pivot, value);
|
||||||
return client.getIntegerReply();
|
return client.getIntegerReply();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pop a value from a list, push it to another list and return it; or block
|
||||||
|
* until one is available
|
||||||
|
*
|
||||||
|
* @param source
|
||||||
|
* @param destination
|
||||||
|
* @param timeout
|
||||||
|
* @return the element
|
||||||
|
*/
|
||||||
|
public String brpoplpush(String source, String destination, int timeout) {
|
||||||
|
client.brpoplpush(source, destination, timeout);
|
||||||
|
return client.getBulkReply();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -134,7 +134,7 @@ public final class Protocol {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static enum Command {
|
public static enum Command {
|
||||||
PING, SET, GET, QUIT, EXISTS, DEL, TYPE, FLUSHDB, KEYS, RANDOMKEY, RENAME, RENAMENX, RENAMEX, DBSIZE, EXPIRE, EXPIREAT, TTL, SELECT, MOVE, FLUSHALL, GETSET, MGET, SETNX, SETEX, MSET, MSETNX, DECRBY, DECR, INCRBY, INCR, APPEND, SUBSTR, HSET, HGET, HSETNX, HMSET, HMGET, HINCRBY, HEXISTS, HDEL, HLEN, HKEYS, HVALS, HGETALL, RPUSH, LPUSH, LLEN, LRANGE, LTRIM, LINDEX, LSET, LREM, LPOP, RPOP, RPOPLPUSH, SADD, SMEMBERS, SREM, SPOP, SMOVE, SCARD, SISMEMBER, SINTER, SINTERSTORE, SUNION, SUNIONSTORE, SDIFF, SDIFFSTORE, SRANDMEMBER, ZADD, ZRANGE, ZREM, ZINCRBY, ZRANK, ZREVRANK, ZREVRANGE, ZCARD, ZSCORE, MULTI, DISCARD, EXEC, WATCH, UNWATCH, SORT, BLPOP, BRPOP, AUTH, SUBSCRIBE, PUBLISH, UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE, ZCOUNT, ZRANGEBYSCORE, ZREMRANGEBYRANK, ZREMRANGEBYSCORE, ZUNIONSTORE, ZINTERSTORE, SAVE, BGSAVE, BGREWRITEAOF, LASTSAVE, SHUTDOWN, INFO, MONITOR, SLAVEOF, CONFIG, STRLEN, SYNC, LPUSHX, PERSIST, RPUSHX, ECHO, LINSERT, DEBUG;
|
PING, SET, GET, QUIT, EXISTS, DEL, TYPE, FLUSHDB, KEYS, RANDOMKEY, RENAME, RENAMENX, RENAMEX, DBSIZE, EXPIRE, EXPIREAT, TTL, SELECT, MOVE, FLUSHALL, GETSET, MGET, SETNX, SETEX, MSET, MSETNX, DECRBY, DECR, INCRBY, INCR, APPEND, SUBSTR, HSET, HGET, HSETNX, HMSET, HMGET, HINCRBY, HEXISTS, HDEL, HLEN, HKEYS, HVALS, HGETALL, RPUSH, LPUSH, LLEN, LRANGE, LTRIM, LINDEX, LSET, LREM, LPOP, RPOP, RPOPLPUSH, SADD, SMEMBERS, SREM, SPOP, SMOVE, SCARD, SISMEMBER, SINTER, SINTERSTORE, SUNION, SUNIONSTORE, SDIFF, SDIFFSTORE, SRANDMEMBER, ZADD, ZRANGE, ZREM, ZINCRBY, ZRANK, ZREVRANK, ZREVRANGE, ZCARD, ZSCORE, MULTI, DISCARD, EXEC, WATCH, UNWATCH, SORT, BLPOP, BRPOP, AUTH, SUBSCRIBE, PUBLISH, UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE, ZCOUNT, ZRANGEBYSCORE, ZREMRANGEBYRANK, ZREMRANGEBYSCORE, ZUNIONSTORE, ZINTERSTORE, SAVE, BGSAVE, BGREWRITEAOF, LASTSAVE, SHUTDOWN, INFO, MONITOR, SLAVEOF, CONFIG, STRLEN, SYNC, LPUSHX, PERSIST, RPUSHX, ECHO, LINSERT, DEBUG, BRPOPLPUSH;
|
||||||
|
|
||||||
public final byte[] raw;
|
public final byte[] raw;
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package redis.clients.jedis.tests.commands;
|
package redis.clients.jedis.tests.commands;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.UnknownHostException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -578,4 +580,52 @@ public class ListCommandsTest extends JedisCommandTestBase {
|
|||||||
assertEquals(-1, bstatus);
|
assertEquals(-1, bstatus);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void brpoplpush() {
|
||||||
|
(new Thread(new Runnable() {
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
Thread.sleep(100);
|
||||||
|
Jedis j = createJedis();
|
||||||
|
j.lpush("foo", "a");
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (UnknownHostException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})).start();
|
||||||
|
|
||||||
|
String element = jedis.brpoplpush("foo", "bar", 0);
|
||||||
|
|
||||||
|
assertEquals("a", element);
|
||||||
|
assertEquals(1, jedis.llen("bar").longValue());
|
||||||
|
assertEquals("a", jedis.lrange("bar", 0, -1).get(0));
|
||||||
|
|
||||||
|
(new Thread(new Runnable() {
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
Thread.sleep(100);
|
||||||
|
Jedis j = createJedis();
|
||||||
|
j.lpush("foo", "a");
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (UnknownHostException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})).start();
|
||||||
|
|
||||||
|
element = jedis.brpoplpush("foo".getBytes(), "bar".getBytes(), 0);
|
||||||
|
|
||||||
|
assertEquals("a", element);
|
||||||
|
assertEquals(1, jedis.llen("bar").longValue());
|
||||||
|
assertEquals("a", jedis.lrange("bar", 0, -1).get(0));
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user