GET IT
Maven
<dependency>
<groupId>top.thinkin.kitdb</groupId>
<artifactId>store</artifactId>
<version>VERSION</version>
</dependency>
VERSION是Maven Central的最新版本号。您还可以在此图像上找到当前版本:
Hello World
K-V
以下是一个简单的示例。创建一个KitDB实例,简单操作K-V,然后关闭这个KitDB实例
DB db = DB.build("/data/kitdb/");
RKv kv = db.getrKv();
kv.set("hello","word".getBytes());
byte[] bytes = kv.get("hello");
kv.del("hello");
db.close();
一般情况下,应该长期保留这个KitDB实例,使用它进行多次操作
With Spring
创建Bean
@Bean
public DB db() throws KitDBException {
return DB.buildTransactionDB("/data/dbx",true);
}
操作K-V
@Autowired
private DB db;
public String doSome(String key) throws KitDBException{
RKv kv = db.getrKv();
byte[] bytes = kv.get(key);
if ( bytes == null ){
return null;
}
returnnew String(bytes, Charset.defaultCharset());
}
List
操作名为 hello 的List
//插入元素
for (int i = 0; i < 10 * 10000; i++) {
rList.add("hello",("world"+i).getBytes());
}
//获取index为100的元素
byte[] bytes_100 = rList.get("hello",100);
//遍历获取所有的元素
try (RIterator<RList> iterator = rList.iterator("hello")){
while (iterator.hasNext()) {
RList.Entry er = iterator.next();
long index = er.getIndex();
byte[] valueBytes = er.getValue();
}
}
// 删除这个List
rList.delete("hello");
ZSet
操作名为 hello 的ZSet
ZSet zSet = db.getzSet();
int i = 10*10000;
List<ZSet.Entry> entryList = new ArrayList<>(i);
for (int j = 0; j < i; j++) {
entryList.add(new ZSet.Entry(j,("world"+j).getBytes()));
}
//批量插入元素
zSet.add("hello",entryList);
//范围查询元素
List<ZSet.Entry> rangList = zSet.range("hello",1000L,1500L,Integer.MAX_VALUE);
//范围查询并删除查询到的元素
List<ZSet.Entry> rangeDelList = zSet.rangeDel("hello",1000L,1500L,Integer.MAX_VALUE);
//获取Size
int size = zSet.size("hello");
//设置过期时间
zSet.ttl("hello",10);
Thread.sleep(10*1000);
//判断是否存在
boolean exist = zSet.isExist("hello");
Other
无法对同一个目录打开多个KitDB实例
DB db = DB.build("/data/kitdb/");
DB db2 = DB.build("/data/kitdb/");// 抛出错误
但可以打开多个只读实例,只读实例只能读取,不能写入
DB db = DB.build("/data/kitdb/");
DB db3 = DB.readOnly("/data/kitdb/");// 正常执行
DB db4 = DB.readOnly("/data/kitdb/");// 正常执行
DB db5 = DB.readOnly("/data/kitdb/");// 正常执行
RKv rKv = db4.getrKv();
byte[] value = rKv.get("hello");// 正常执行
rKv.set("hello","world".getBytes());// 抛出错误