
com.taobao.tair.TairManager Maven / Gradle / Ivy
/**
*
*/
package com.taobao.tair;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
/**
* Tair的接口,支持持久化存储和非持久化(即cache)存储
*
* @author ruohai
*
*/
public interface TairManager {
/**
* 获取数据
*
* @param namespace
* 数据所在的namespace
* @param key
* 要获取的数据的key
* @return
*/
Result get(int namespace, Serializable key);
/**
* 批量获取数据
*
* @param namespace
* 数据所在的namespace
* @param keys
* 要获取的数据的key列表
* @return 如果成功,返回的数据对象为一个Map
*/
Result> mget(int namespace, List extends Object> keys);
/**
* 设置数据,如果数据已经存在,则覆盖,如果不存在,则新增 如果是新增,则有效时间为0,即不失效 如果是更新,则不检查版本,强制更新
*
* @param namespace
* 数据所在的namespace
* @param key
* @param value
* @return
*/
ResultCode put(int namespace, Serializable key, Serializable value);
/**
* 设置数据,如果数据已经存在,则覆盖,如果不存在,则新增
*
* @param namespace
* 数据所在的namespace
* @param key
* 数据的key
* @param value
* 数据的value
* @param version
* 数据的版本,如果和系统中数据的版本不一致,则更新失败
* @return
*/
ResultCode put(int namespace, Serializable key, Serializable value,
int version);
/**
* 设置数据,如果数据已经存在,则覆盖,如果不存在,则新增
*
* @param namespace
* 数据所在的namespace
* @param key
* 数据的key
* @param value
* 数据的value
* @param version
* 数据的版本,如果和系统中数据的版本不一致,则更新失败
* @param expireTime
* 数据的有效时间,单位为秒
* @return
*/
ResultCode put(int namespace, Serializable key, Serializable value,
int version, int expireTime);
/**
* 删除key对应的数据
*
* @param namespace
* 数据所在的namespace
* @param key
* 数据的key
* @return
*/
ResultCode delete(int namespace, Serializable key);
/**
* 失效数据,该方法将失效由失效服务器配置的多个实例中当前group下的数据
*
* @param namespace
* 数据所在的namespace
* @param key
* 要失效的key
* @deprecated 请直接使用delete接口
* @return
*/
ResultCode invalid(int namespace, Serializable key);
/**
* 批量失效数据,该方法将失效由失效服务器配置的多个实例中当前group下的数据
*
* @param namespace
* 数据所在的namespace
* @param keys
* 要失效的key列表
* @deprecated 请使用mdelete接口
* @return
*/
ResultCode minvalid(int namespace, List extends Object> keys);
/**
* 批量删除,如果全部删除成功,返回成功,否则返回失败
*
* @param namespace
* 数据所在的namespace
* @param keys
* 要删除数据的key列表
* @return
*/
ResultCode mdelete(int namespace, List extends Object> keys);
/**
* 将key对应的数据加上value,如果key对应的数据不存在,则新增,并将值设置为defaultValue
* 如果key对应的数据不是int型,则返回失败
*
* @param namespace
* 数据所在的namspace
* @param key
* 数据的key
* @param value
* 要加的值
* @param defaultValue
* 不存在时的默认值
* @return 更新后的值
*/
Result incr(int namespace, Serializable key, int value,
int defaultValue, int expireTime);
/**
* 将key对应的数据减去value,如果key对应的数据不存在,则新增,并将值设置为defaultValue
* 如果key对应的数据不是int型,则返回失败
*
* @param namespace
* 数据所在的namspace
* @param key
* 数据的key
* @param value
* 要减去的值
* @param defaultValue
* 不存在时的默认值
* @return 更新后的值
*/
Result decr(int namespace, Serializable key, int value,
int defaultValue, int expireTime);
/**
* 将key对应的计数设置成count,忽略key原来是否存在以及是否是计数类型。
* 因为Tair中计数的数据有特别标志,所以不能直接使用put设置计数值。
*
* @param namespace
* 数据所在的namspace
* @param key
* 数据的key
* @param count
* 要设置的值
*/
ResultCode setCount(int namespace, Serializable key, int count);
/**
* 将key对应的计数设置成count,忽略key原来是否存在以及是否是计数类型。
* 因为Tair中计数的数据有特别标志,所以不能直接使用put设置计数值。
*
* @param namespace
* 数据所在的namspace
* @param key
* 数据的key
* @param count
* 要设置的值
* @param version
* 版本,不关心并发,传入0
* @param expireTime
* 过期时间,不使用传入0
*/
ResultCode setCount(int namespace, Serializable key, int count, int version, int expireTime);
/**
* 增加集合数据类型,如果原集合数据不存在,则执行insert操作
* @param namespace 数据所在的namespace
* @param key 数据的key
* @param items 要增加的value,当前值接受基本类型,详情参见Json.checkType
* @param maxCount 集合允许的最大条目数量,超过这个数量,系统将直接删除相应数量的最早放入的条目
* @param version 版本号,如果非0,当传入的版本号和系统中的版本号不同时,返回版本错误
* @param expireTime 超时时间
* @return 返回代码
*/
ResultCode addItems(int namespace, Serializable key,
List extends Object> items, int maxCount, int version,
int expireTime);
/**
* 获取集合数据
* @param namespace 数据所在的namespace
* @param key 数据的key
* @param offset 要获取的数据的偏移量
* @param count 要获取的数据的条数
* @return 如果数据不存在,返回DATANOTEXIST,否则成功返回相应的条数,失败返回相应的错误代码
*/
Result getItems(int namespace, Serializable key,
int offset, int count);
/**
* 删除集合中的数据
* @param namespace 数据所在的namespace
* @param key 数据的key
* @param offset 要删除的数据的偏移量
* @param count 要删除的数据的条数
* @return 删除是否成功
*/
ResultCode removeItems(int namespace, Serializable key, int offset,
int count);
/**
* 删除并返回集合中的数据
* @param namespace 数据所在的namespace
* @param key 数据的key
* @param offset 要删除的数据的偏移量
* @param count 要删除的数据的条数
* @return 如果删除成功,返回本次删除成功删除的数据
*/
Result getAndRemove(int namespace,
Serializable key, int offset, int count);
/**
* 获取key对应的集合中的条目数量
* @param namespace 数据所在的namespace
* @param key 数据的key
* @return 如果数据不存在,返回不存在;否则成功返回集合的条目数量,失败返回相应的错误代码
*/
Result getItemCount(int namespace, Serializable key);
/**
* 锁住一个key,不再允许更新, 允许读和删除。
* @param namespace 数据所在的namespace
* @param key 数据的key
* @return 如果数据不存在,返回不存在;如果数据存在但已经被lock,返回lock已经存在的错误码;
* 否则成功。
*/
ResultCode lock(int namespace, Serializable key);
/**
* 解锁一个key。
* @param namespace 数据所在的namespace
* @param key 数据的key
* @return 如果数据不存在,返回不存在;如果数据存在但未被lock,返回lock不存在的错误码;
* 否则成功。
*/
ResultCode unlock(int namespace, Serializable key);
/**
* 批量锁key。
* @param namespace 数据所在的namespace
* @param keys 数据的key
* @return Result.getRc()是返回的ResultCode, 如果都成功, 返回成功;
* 如果返回PARTSUCC, 则Result.getValue()为成功的key.
*/
Result> mlock(int namespace, List extends Object> keys);
/**
* 批量锁key。
* @param namespace 数据所在的namespace
* @param keys 数据的key
* @param failKeysMap 传入保存失败的key
* @return Result.getRc()是返回的ResultCode, 如果都成功, 返回成功;
* 如果返回PARTSUCC, 则Result.getValue()为成功的key,并且如果传入failKeysMap不为null,
* failKeysMap为失败的key以及对应的错误码。
*/
Result> mlock(int namespace, List extends Object> keys, Map
© 2015 - 2025 Weber Informatics LLC | Privacy Policy