GET IT

Maven

  1. <dependency>
  2. <groupId>top.thinkin.kitdb</groupId>
  3. <artifactId>store</artifactId>
  4. <version>VERSION</version>
  5. </dependency>

VERSION是Maven Central的最新版本号。您还可以在此图像上找到当前版本:Maven Central

Hello World

K-V

以下是一个简单的示例。创建一个KitDB实例,简单操作K-V,然后关闭这个KitDB实例

  1. DB db = DB.build("/data/kitdb/");
  2. RKv kv = db.getrKv();
  3. kv.set("hello","word".getBytes());
  4. byte[] bytes = kv.get("hello");
  5. kv.del("hello");
  6. db.close();

一般情况下,应该长期保留这个KitDB实例,使用它进行多次操作

With Spring

创建Bean

  1. @Bean
  2. public DB db()throwsKitDBException{
  3. return DB.buildTransactionDB("/data/dbx",true);
  4. }

操作K-V

  1. @Autowired
  2. private DB db;
  3. publicString doSome(String key)throwsKitDBException{
  4. RKv kv = db.getrKv();
  5. byte[] bytes = kv.get(key);
  6. if( bytes ==null){
  7. returnnull;
  8. }
  9. returnnew String(bytes,Charset.defaultCharset());
  10. }

List

操作名为 hello 的List

  1. //插入元素
  2. for(int i =0; i <10*10000; i++){
  3. rList.add("hello",("world"+i).getBytes());
  4. }
  5. //获取index为100的元素
  6. byte[] bytes_100 = rList.get("hello",100);
  7. //遍历获取所有的元素
  8. try(RIterator<RList> iterator = rList.iterator("hello")){
  9. while(iterator.hasNext()){
  10. RList.Entry er = iterator.next();
  11. long index = er.getIndex();
  12. byte[] valueBytes = er.getValue();
  13. }
  14. }
  15. // 删除这个List
  16. rList.delete("hello");

ZSet

操作名为 hello 的ZSet

  1. ZSet zSet = db.getzSet();
  2. int i =10*10000;
  3. List<ZSet.Entry> entryList =newArrayList<>(i);
  4. for(int j =0; j < i; j++){
  5. entryList.add(newZSet.Entry(j,("world"+j).getBytes()));
  6. }
  7. //批量插入元素
  8. zSet.add("hello",entryList);
  9. //范围查询元素
  10. List<ZSet.Entry> rangList = zSet.range("hello",1000L,1500L,Integer.MAX_VALUE);
  11. //范围查询并删除查询到的元素
  12. List<ZSet.Entry> rangeDelList = zSet.rangeDel("hello",1000L,1500L,Integer.MAX_VALUE);
  13. //获取Size
  14. int size = zSet.size("hello");
  15. //设置过期时间
  16. zSet.ttl("hello",10);
  17. Thread.sleep(10*1000);
  18. //判断是否存在
  19. boolean exist = zSet.isExist("hello");

Other

无法对同一个目录打开多个KitDB实例

  1. DB db = DB.build("/data/kitdb/");
  2. DB db2 = DB.build("/data/kitdb/");// 抛出错误

但可以打开多个只读实例,只读实例只能读取,不能写入

  1. DB db = DB.build("/data/kitdb/");
  2. DB db3 = DB.readOnly("/data/kitdb/");// 正常执行
  3. DB db4 = DB.readOnly("/data/kitdb/");// 正常执行
  4. DB db5 = DB.readOnly("/data/kitdb/");// 正常执行
  5. RKv rKv = db4.getrKv();
  6. byte[] value = rKv.get("hello");// 正常执行
  7. rKv.set("hello","world".getBytes());// 抛出错误