public class SaeKV extends Object
处于兼容性的考虑,可能会在未来提供java,php,python以及其他语言的互操作, 由于各种语言的基本类型不一致,导致语言的互操作可能会出现问题,因此java平台的 kv客户端并没有提供所有java基本类型的保存方式,取而代之的是只有boolean, long,double,byte[]四种类型。(仅在sdk的1.2.2之前的版本中使用,1.2.2之后的版本不包含kvdb的sdk)
因为java语言的基本类型都是有符号的,我们提供了short-->long,int-->long等基本 类型相互转化的工具类,以及对象序列化和反序列化的方法。
假设您需要保存一个Person对象到服务端,您可以使用如下操作:
Person person = new Person(); SaeKV kv = new SaeKV(); kv.init(); kv.set("p", SaeKVUtil.serializable(person));当需要获取Person值时可以使用如下操作:
Person person = SaeKVUtil.deserializable(kv.get("p"));java语言中int转换为long如果是有符号数,会执行一个符号位扩展,所以当您在保持 int类型值的时候(其他类型值,如short,byte也会有这种问题)如果需要忽略符号位扩展, 可以使用我们提供的方法,使用如下操作:
SaeKV kv = new SaeKV(); kv.set("aa", SaeKVUtil.intToLong(9527));当需要获取一个int类型可以使用如下操作:
int x = SaeKVUtil.longToInt(kv.get("aa"));注意,对象类型最终是以byte[]作为参数传给SaeKV的,而String类型,图片,也是以byte[]作为参数的。
String s = "abc"; byte[] buf = SaeKVUtil.StringToByte(s);SaeKVUtil.StringToByte()返回的是一个byte[]内容,如果查看这个byte[]数组,内容是:[97, 98, 99]
构造器和说明 |
---|
SaeKV()
默认构造函数自动设置accesskey无需手动传入
|
SaeKV(String accesskey,
String secretkey)
提供一个可以自定义ak和sk的构造函数
|
限定符和类型 | 方法和说明 |
---|---|
com.sinacloud.java.kvdb.SaeKV.KeyValue |
createConn()
创建链接,会在ip中便利所有可用的ip直到找到一个合适的ip并创建连接,如果所有的ip都不可用则抛出异常
对于一个ip会尝试连接三次,如果不成功则将这个ip删除并放到一个定时器中,定时器的执行时间是30分钟
如果所有步骤执行成功则返回TTransport对象
|
boolean |
delete(String key)
删除一个指定的值
|
boolean |
delete(String key,
Date expiry)
已过时。
这个方法已经过时,建议直接使用delete(String key)
|
<T> T |
get(String key)
获取一个指定的值,如果指定的值不存在则返回null
|
int |
getErrCode()
返回错误码
|
String |
getErrMsg()
返回错误消息
|
Map<String,Long> |
getInfo()
已过时。
此方法已过时,获取的内容为空
|
Map<String,Object> |
getMulti(String[] keys)
查找多个key,如果传入的key集合为空则返回一个空Map,如果找不到对应的值也会返回一个空Map
|
void |
init()
初始化kv客户端
|
Map<String,Object> |
pkrget(String prefixKey,
int queryCount,
boolean isContainValue,
String compareKey)
根据key前缀查找,如存储的key是aa1,aa2,aa3,则前缀应为aa,不支持正则表达式。
|
Map<String,Object> |
pkrget(String prefixKey,
int queryCount,
String compareKey)
根据key前缀查找,如存储的key是aa1,aa2,aa3,则前缀应为aa,不支持正则表达式。
|
Map<String,Object> |
pkrget(String prefixKey,
String compareKey)
根据key前缀查找,如存储的key是aa1,aa2,aa3,则前缀应为aa,不支持正则表达式。
|
boolean |
rdel(String startKey,
String endKey)
根据key的范围删除
|
boolean |
rdel(String startKey,
String endKey,
boolean isContainStartVlaue,
boolean isContainEndValue)
根据key的范围删除
|
boolean |
rdel(String startKey,
String endKey,
boolean isContainStartVlaue,
boolean isContainEndValue,
int deleteCount)
根据key的范围删除
|
boolean |
rdel(String startKey,
String endKey,
int deleteCount)
根据key的范围删除
|
Map<String,Object> |
rget(String startKey,
String endKey)
根据key的范围查找
|
Map<String,Object> |
rget(String startKey,
String endKey,
boolean isContainStartVlaue,
boolean isContainEndValue)
根据key的范围查找
|
Map<String,Object> |
rget(String startKey,
String endKey,
boolean isContainStartVlaue,
boolean isContainEndValue,
int queryCount)
根据key的范围查找
|
Map<String,Object> |
rget(String startKey,
String endKey,
int queryCount)
根据key的范围查找
|
boolean |
set(String key,
boolean value)
保存一个指定的值,不管指定的key在服务端是否存在都会被保存
|
boolean |
set(String key,
boolean value,
long expiry)
已过时。
此方法已过时,建议不要使用过期时间
|
boolean |
set(String key,
byte[] value)
保存一个指定的值,不管指定的key在服务端是否存在都会被保存
|
boolean |
set(String key,
byte[] value,
long expiry)
已过时。
此方法已过时,建议不要使用过期时间
|
boolean |
set(String key,
double value)
保存一个指定的值,不管指定的key在服务端是否存在都会被保存
|
boolean |
set(String key,
double value,
long expiry)
已过时。
此方法已过时,建议不要使用过期时间
|
boolean |
set(String key,
long value)
保存一个指定的值,不管指定的key在服务端是否存在都会被保存
|
boolean |
set(String key,
long value,
long expiry)
已过时。
此方法已过时,建议不要使用过期时间
|
void |
setOptions(String option)
在老版本中可以设置一些特殊选项,在hbase实现中这只是一个空函数不做任何功能,为的只是兼容老的API
|
public void init()
public com.sinacloud.java.kvdb.SaeKV.KeyValue createConn()
public boolean delete(String key)
key
- 需要删除的数据key@Deprecated public boolean delete(String key, Date expiry)
key
- 需要删除的数据keyexpiry
- 过期时间public <T> T get(String key)
key
- 需要获取值的keypublic boolean set(String key, boolean value)
key
- 指定的keyvalue
- 需要保存的值@Deprecated public boolean set(String key, boolean value, long expiry)
key
- 指定的keyvalue
- 需要保存的值expiry
- 过期时间public boolean set(String key, byte[] value)
key
- 指定的keyvalue
- 需要保存的值@Deprecated public boolean set(String key, byte[] value, long expiry)
key
- 指定的keyvalue
- 需要保存的值expiry
- 过期时间public boolean set(String key, double value)
key
- 指定的keyvalue
- 需要保存的值@Deprecated public boolean set(String key, double value, long expiry)
key
- 指定的keyvalue
- 需要保存的值expiry
- 过期时间public boolean set(String key, long value)
key
- 指定的keyvalue
- 需要保存的值@Deprecated public boolean set(String key, long value, long expiry)
key
- 指定的keyvalue
- 需要保存的值expiry
- 过期时间public Map<String,Object> getMulti(String[] keys)
keys
- 需要查找的key集合public Map<String,Object> pkrget(String prefixKey, int queryCount, String compareKey)
prefixKey
- key前缀queryCount
- 查询数量,最多支持100个,如果超过100个只按100个查询compareKey
- 需要比较的key,如果存储的key为aa1,aa2,aa3,aa4,输入aa2,则返回的aa3和aa4public Map<String,Object> pkrget(String prefixKey, String compareKey)
prefixKey
- key前缀compareKey
- 需要比较的key,如果存储的key为aa1,aa2,aa3,aa4,输入aa2,则返回的aa3和aa4public Map<String,Object> pkrget(String prefixKey, int queryCount, boolean isContainValue, String compareKey)
prefixKey
- key前缀queryCount
- 查询数量,最多支持100个,如果超过100个只按100个查询isContainValue
- 是否包含查找的值,如果设置此值为false,则返回的map中所有的value都为nullcompareKey
- 需要比较的key,如果存储的key为aa1,aa2,aa3,aa4,输入aa2,则返回的aa3和aa4public boolean rdel(String startKey, String endKey)
startKey
- 起始的keyendKey
- 结束的keypublic boolean rdel(String startKey, String endKey, boolean isContainStartVlaue, boolean isContainEndValue)
startKey
- 起始的keyendKey
- 结束的keyisContainStartVlaue
- 是否包含第一个查到的keyisContainEndValue
- 是否包含最后一个查到的keypublic boolean rdel(String startKey, String endKey, int deleteCount)
startKey
- 起始的keyendKey
- 结束的keydeleteCount
- 删除的数量public boolean rdel(String startKey, String endKey, boolean isContainStartVlaue, boolean isContainEndValue, int deleteCount)
startKey
- 起始的keyendKey
- 结束的keyisContainStartVlaue
- 是否包含第一个查到的keyisContainEndValue
- 是否包含最后一个查到的keydeleteCount
- 删除的数量public Map<String,Object> rget(String startKey, String endKey)
startKey
- 起始的keyendKey
- 结束的keypublic Map<String,Object> rget(String startKey, String endKey, boolean isContainStartVlaue, boolean isContainEndValue)
startKey
- 起始的keyendKey
- 结束的keyisContainStartVlaue
- 是否包含第一个查到的keyisContainEndValue
- 是否包含最后一个查到的keypublic Map<String,Object> rget(String startKey, String endKey, int queryCount)
startKey
- 起始的keyendKey
- 结束的keyqueryCount
- 查询的数量public Map<String,Object> rget(String startKey, String endKey, boolean isContainStartVlaue, boolean isContainEndValue, int queryCount)
startKey
- 起始的keyendKey
- 结束的keyisContainStartVlaue
- 是否包含第一个查到的keyisContainEndValue
- 是否包含最后一个查到的keyqueryCount
- 查询的数量public void setOptions(String option)
option
- @Deprecated public Map<String,Long> getInfo()
public int getErrCode()
public String getErrMsg()
Copyright © 2016. All rights reserved.