package ddth.dasp.common.redis;
import java.util.List;
import java.util.Set;
/**
* A Redis (http://redis.io) client API.
*
* @author Thanh B. Nguyen <btnguyen2k@gmail.com>
*/
public interface IRedisClient {
public final static int DEFAULT_REDIS_PORT = 6379;
public final static int DEFAULT_READ_TIMEOUT = 10;
/**
* Initializes this Redis client before use. The Redis client is not usable
* until this method is called.
*/
public void init();
/**
* Destroys this Redis client. The Redis client is no longer usable after
* calling this method.
*/
public void destroy();
/**
* Closes this Redis client, but donot destroy it.
*/
public void close();
/* Redis API */
/**
* "Ping" the Redis server.
*
* @return
*/
public String ping();
/**
* Updates expiry time of a Redis key.
*
* @param key
* @param ttlSeconds
* time to live (a.k.a "expiry after write") in seconds
*/
public void expire(String key, int ttlSeconds);
/**
* Deletes value(s) from Redis server.
*
* @param keys
*/
public void delete(String... keys);
/**
* Gets a value from Redis server.
*
* @param key
* @return
*/
public String get(String key);
/**
* Gets a value from Redis server.
*
* @param key
* @return
*/
public byte[] getAsBinary(String key);
/**
* Sets a value to Redis server.
*
* @param key
* @param value
* @param ttlSeconds
* time to live (a.k.a "expiry after write") in seconds
*/
public void set(String key, String value, int ttlSeconds);
/**
* Sets a value to Redis server.
*
* @param key
* @param value
* @param ttlSeconds
* time to live (a.k.a "expiry after write") in seconds
*/
public void set(String key, byte[] value, int ttlSeconds);
/**
* Deletes values from a Redis hash.
*
* @param mapName
* @param fieldNames
*/
public void hashDelete(String mapName, String... fieldNames);
/**
* Gets number of elements of a Redis hash.
*
* @param mapName
* @return
*/
public long hashSize(String mapName);
/**
* Gets a field value from a Redis hash.
*
* @param mapName
* @param fieldName
* @return
*/
public String hashGet(String mapName, String fieldName);
/**
* Gets a field value from a Redis hash.
*
* @param mapName
* @param fieldName
* @return
*/
public byte[] hashGetAsBinary(String mapName, String fieldName);
/**
* Sets a field value of a Redis hash.
*
* @param mapName
* @param fieldName
* @param value
* @param ttlSeconds
* time to live (a.k.a "expiry after write") in seconds
*/
public void hashSet(String mapName, String fieldName, String value, int ttlSeconds);
/**
* Sets a field value of a Redis hash.
*
* @param mapName
* @param fieldName
* @param value
* @param ttlSeconds
* time to live (a.k.a "expiry after write") in seconds
*/
public void hashSet(String mapName, String fieldName, byte[] value, int ttlSeconds);
/**
* Pushes a message to head of a list.
*
* @param listName
* @param messages
*/
public void listPush(String listName, String... messages);
/**
* Pushes a message to head of a list.
*
* @param listName
* @param messages
*/
public void listPush(String listName, byte[]... message);
/**
* Pushes a message to head of a list.
*
* @param listName
* @param ttlSeconds
* @param messages
*/
public void listPush(String listName, int ttlSeconds, String... messages);
/**
* Pushes a message to head of a list.
*
* @param listName
* @param ttlSeconds
* @param messages
*/
public void listPush(String listName, int ttlSeconds, byte[]... messages);
/**
* Pops a message from tail of a list.
*
* @param listName
* @return
*/
public String listPop(String listName);
/**
* Pops a message from tail of a list.
*
* @param listName
* @param block
* block until data is available?
* @return
*/
public String listPop(String listName, boolean block);
/**
* Pops a message from tail of a list.
*
* @param listName
* @param block
* block until data is available?
* @param timeout
* timeout in seconds
* @return
*/
public String listPop(String listName, boolean block, int timeout);
/**
* Pops a message from tail of a list.
*
* @param listName
* @return
*/
public byte[] listPopAsBinary(String listName);
/**
* Pops a message from tail of a list.
*
* @param listName
* @param block
* block until data is available?
* @return
*/
public byte[] listPopAsBinary(String listName, boolean block);
/**
* Pops a message from tail of a list.
*
* @param listName
* @param block
* block until data is available?
* @param timeout
* timeout in seconds
* @return
*/
public byte[] listPopAsBinary(String listName, boolean block, int timeout);
/**
* Gets all list members.
*
* @param listName
* @return
*/
public List<String> listMembers(String listName);
/**
* Gets all list members.
*
* @param listName
* @return
*/
public List<byte[]> listMembersAsBinary(String listName);
/**
* Gets a list's size.
*
* @param listName
* @return
*/
public long listSize(String listName);
/**
* Adds messages to a set.
*
* @param setName
* @param messages
*/
public void setAdd(String setName, String... messages);
/**
* Adds messages to a set.
*
* @param setName
* @param messages
*/
public void setAdd(String setName, byte[]... messages);
/**
* Adds messages to a set.
*
* @param setName
* @param ttlSeconds
* @param messages
*/
public void setAdd(String setName, int ttlSeconds, String... messages);
/**
* Adds messages to a set.
*
* @param setName
* @param ttlSeconds
* @param messages
*/
public void setAdd(String setName, int ttlSeconds, byte[]... messages);
/**
* Checks if a value is a member of a set.
*
* @param setName
* @param value
* @return
*/
public boolean setIsMember(String setName, String value);
/**
* Randomly removes and returns an element from a set.
*
* @param setName
* @return
*/
public String setPop(String setName);
/**
* Randomly removes and returns an element from a set as a binary string.
*
* @param setName
* @return
*/
public byte[] setPopAsBinary(String setName);
/**
* Gets all members of a set.
*
* @param setName
* @return
*/
public Set<String> setMembers(String setName);
/**
* Gets all members of a set as binary.
*
* @param setName
* @return
*/
public Set<byte[]> setMembersAsBinary(String setName);
/**
* Removes value(s) from a set.
*
* @param setName
* @param members
*/
public void setRemove(String setName, String... members);
/**
* Removes a value from a set.
*
* @param setName
* @param members
*/
public void setRemove(String setName, byte[]... members);
/**
* Checks if a value is a member of a set.
*
* @param setName
* @param value
* @return
*/
public boolean setIsMember(String setName, byte[] value);
/**
* Gets size of a set.
*
* @param setName
* @return
*/
public long setSize(String setName);
/**
* Publishes a message to a channel.
*
* @param channelName
* @param message
*/
public void publish(String channelName, String message);
/**
* Publishes a message to a channel.
*
* @param channelName
* @param message
*/
public void publish(String channelName, byte[] message);
/**
* Subscribes to a channel.
*
* Note: This method is a blocking operation!
*
* @param channelName
* @param messageListener
* @return
*/
public boolean subscribe(String channelName, IMessageListener messageListener);
/**
* Unsubscribes from a channel.
*
* @param channelName
* @param messageListener
* @return
*/
public boolean unsubscribe(String channelName, IMessageListener messageListener);
/* Redis API */
}