text: package pers.husen.highdsa.service.redis;
  
  import java.util.List;
  import java.util.Map;
  import java.util.Set;
  
  /**
   * @Desc redis 操作服务接口
   *
   * @Author 何明胜
   *
   * @Created at 2018年3月3日 下午5:13:32
   * 
   * @Version 1.0.0
   */
  public interface RedisOperation {
  	/**
  	 * 设置String
  	 * 
  	 * @param key
  	 * @param value
  	 * @return
  	 */
  	public String set(String key, String value);
  
  	/**
  	 * 设置String
  	 * 
  	 * @param key
  	 * @param value
  	 * @param cacheSeconds
  	 *            超时时间,0为不超时
  	 * @return
  	 */
  	public String set(String key, String value, int cacheSeconds);
  
  	/**
  	 * 获取String
  	 * 
  	 * @param key
  	 * @return
  	 */
  	public String get(String key);
  
  	/**
  	 * 在key的值后面拼接字符串
  	 * 
  	 * @param key
  	 * @param addString
  	 * @return
  	 */
  	public Long append(String key, String addString);
  
  	/**
  	 * 缓存是否存在
  	 * 
  	 * @param key
  	 * @return
  	 */
  	public Boolean exists(String key);
  
  	/**
  	 * 删除缓存
  	 * 
  	 * @param key
  	 * @return
  	 */
  	public Long del(String key);
  
  	/**
  	 * 删除多个
  	 * 
  	 * @param key
  	 * @return
  	 */
  	public Long del(String... key);;
  
  	/**
  	 * 设置对象
  	 * 
  	 * @param key
  	 * @param value
  	 * @param cacheSeconds
  	 *            超时时间,0为不超时
  	 * @return
  	 */
  	public String setObject(String key, Object value, int cacheSeconds);
  
  	/**
  	 * 获取对象
  	 * 
  	 * @param key
  	 * @return
  	 */
  	public Object getObject(String key);
  
  	/**
  	 * 缓存是否存在
  	 * 
  	 * @param key
  	 * @return
  	 */
  	public Boolean existsObject(String key);
  
  	/**
  	 * 删除缓存
  	 * 
  	 * @param key
  	 * @return
  	 */
  	public Long delObject(String key);
  
  	/**
  	 * 根据Object key设置对象
  	 * 
  	 * @param key
  	 * @param value
  	 * @param cacheSeconds
  	 * @return
  	 */
  	public String setObject(Object key, Object value, int cacheSeconds);
  
  	/**
  	 * 根据Object key 获取对象
  	 * 
  	 * @param key
  	 * @return
  	 */
  	public Object getObject(Object key);
  
  	/**
  	 * 删除Object key的缓存
  	 * 
  	 * @param key
  	 * @return
  	 */
  	public Long removeObject(Object key);
  
  	/**
  	 * 设置List缓存
  	 * 
  	 * @param key
  	 * @param value
  	 * @param cacheSeconds
  	 *            超时时间,0为不超时
  	 * @return
  	 */
  	public Long setList(String key, List<String> value, int cacheSeconds);
  
  	/**
  	 * 获取List缓存
  	 * 
  	 * @param key
  	 * @return
  	 */
  	public List<String> getList(String key);
  
  	/**
  	 * 向List缓存中添加值
  	 * 
  	 * @param key
  	 * @param value
  	 * @return
  	 */
  	public Long appendList(String key, String... value);
  
  	/**
  	 * 设置List缓存
  	 * 
  	 * @param key
  	 * @param value
  	 * @param cacheSeconds
  	 *            超时时间,0为不超时
  	 * @return
  	 */
  	public String setObjectList(String key, List<Object> value, int cacheSeconds);
  
  	/**
  	 * 获取List缓存
  	 * 
  	 * @param key
  	 * @return
  	 */
  	public List<Object> getObjectList(String key);
  
  	/**
  	 * 向List缓存中添加值
  	 * 
  	 * @param key
  	 * @param value
  	 * @return
  	 */
  	public String appendObjectList(String key, Object... value);
  
  	/**
  	 * 一次设置多个 key 的值,成功返回 ok 表示所有的值都设置了,失败返回 0 表示没有任何值被设置 key1, value1, key2, value2
  	 * 
  	 * @param keys3Values
  	 * @return
  	 */
  	public String mset(String... keys3Values);
  
  	/**
  	 * 返回所有(一个或多个)给定 key 的值
  	 * 
  	 * @param keys
  	 * @return
  	 */
  	public List<String> mget(String... keys);
  
  	/**
  	 * 设置Set缓存
  	 * 
  	 * @param key
  	 * @param value
  	 * @param cacheSeconds
  	 *            超时时间,0为不超时
  	 * @return
  	 */
  	public Long setSet(String key, Set<String> value, int cacheSeconds);
  
  	/**
  	 * 获取缓存
  	 * 
  	 * @param key
  	 * @return
  	 */
  	public Set<String> getSet(String key);
  
  	/**
  	 * 向Set缓存中添加值
  	 * 
  	 * @param key
  	 * @param value
  	 * @return
  	 */
  	public Long appendSet(String key, String... value);
  
  	/**
  	 * 设置ObjectSet缓存
  	 * 
  	 * @param key
  	 * @param value
  	 * @param cacheSeconds
  	 *            超时时间,0为不超时
  	 * @return
  	 */
  	public String setObjectSet(String key, Set<Object> value, int cacheSeconds);
  
  	/**
  	 * 获取Object缓存
  	 * 
  	 * @param key
  	 * @return
  	 */
  	public Set<Object> getObjectSet(String key);
  
  	/**
  	 * 向ObjectSet缓存中添加值
  	 * 
  	 * @param key
  	 * @param value
  	 * @return
  	 */
  	public String appendObjectSet(String key, Object... value);
  
  	/**
  	 * 设置Map缓存
  	 * 
  	 * @param key
  	 * @param value
  	 * @param cacheSeconds
  	 *            超时时间,0为不超时
  	 * @return
  	 */
  	public String setMap(String key, Map<String, String> value, int cacheSeconds);
  
  	/**
  	 * 获取Map缓存
  	 * 
  	 * @param key
  	 * @return
  	 */
  	public Map<String, String> getMap(String key);
  
  	/**
  	 * 向Map缓存中添加值
  	 * 
  	 * @param key
  	 * @param value
  	 * @return
  	 */
  	public String appendMap(String key, Map<String, String> value);
  
  	/**
  	 * 移除Map缓存中的值
  	 * 
  	 * @param key
  	 * @param mapKey
  	 * @return
  	 */
  	public Long removeMap(String key, String mapKey);
  
  	/**
  	 * 删除map中的多个Key值
  	 * 
  	 * @param key
  	 * @param mapKeys
  	 * @return
  	 */
  	public Long removeMap(String key, String... mapKeys);
  
  	/**
  	 * 判断Map缓存中的Key是否存在
  	 * 
  	 * @param key
  	 * @param mapKey
  	 * @return
  	 */
  	public Boolean existsMap(String key, String mapKey);
  
  	/**
  	 * 设置Map缓存
  	 * 
  	 * @param key
  	 * @param value
  	 * @param cacheSeconds
  	 *            超时时间,0为不超时
  	 * @return
  	 */
  	public String setObjectMap(String key, Map<String, Object> value, int cacheSeconds);
  
  	/**
  	 * 获取Map缓存
  	 * 
  	 * @param key
  	 * @return
  	 */
  	public Map<String, Object> getObjectMap(String key);
  
  	/**
  	 * 向Map缓存中添加值
  	 * 
  	 * @param key
  	 * @param value
  	 * @return
  	 */
  	public String appendObjectMap(String key, Map<String, Object> value);
  
  	/**
  	 * 移除ObjectMap缓存中的值
  	 * 
  	 * @param key
  	 * @param mapKey
  	 * @return
  	 */
  	public Long removeObjectMap(String key, String mapKey);
  
  	/**
  	 * 判断ObjectMap缓存中的Key是否存在
  	 * 
  	 * @param key
  	 * @param mapKey
  	 * @return
  	 */
  	public Boolean existsObjectMap(String key, String mapKey);
  
  	/**
  	 * 清空整个 Redis 服务器的数据(删除所有数据库的所有 key )
  	 * 
  	 * @return
  	 */
  	public String flushAll();
  
  	/**
  	 * 清空当前数据库的所有key
  	 * 
  	 * @return
  	 */
  	public String flushDB();
  
  	/**
  	 * 获取数据库的数量
  	 * 
  	 * @return
  	 */
  	public Integer getDbSize();
  
  	/**
  	 * 获取所有key
  	 * 
  	 * @param pattern
  	 * @return
  	 */
  	public Set<byte[]> keys(String pattern);
  
  	/**
  	 * 根据前缀获取所有的value
  	 * 
  	 * @param pattern
  	 * @return
  	 */
  	public List<Object> values(String pattern);
  
  	/**
  	 * 根据字节数组获取字节数组
  	 * 
  	 * @param key
  	 * @return
  	 */
  	public byte[] get(byte[] key);
  
  	/**
  	 * 设置字节数组
  	 * 
  	 * @param key
  	 * @param value
  	 * @return
  	 */
  	public byte[] set(byte[] key, byte[] value);
  
  	/**
  	 * 设置字节数组,带过期时间
  	 * 
  	 * @param key
  	 * @param value
  	 * @param expire
  	 * @return
  	 */
  	public byte[] set(byte[] key, byte[] value, int expire);
  
  	/**
  	 * del
  	 * 
  	 * @param key
  	 */
  	public void del(byte[] key);
  
  	/**
  	 * 获取db数量
  	 * 
  	 * @return
  	 */
  	public Long dbSize();
  }