@Test public void remove() throws KitDBException { String head = "remove1"; RMap map = db.getMap(); int num = 1000; try { String[] keys = new String[num]; for (int i = 0; i < num; i++) { map.put(head, "hello" + i, ("hello" + i).getBytes()); keys[i] = "hello" + i; } Random r = new Random(1); String[] integers = new String[num / 10]; for (int i = 0; i < num / 10; i++) { integers[i] = "hello" + r.nextInt(num / 10); } map.remove(head, integers); for (String integer : integers) { byte[] bytes = map.get(head, integer); Assert.assertNull(bytes); } } finally { map.delete(head); } }
public void remove(String key, String... keys) throws KitDBException { checkTxStart(); try (CloseLock ignored = checkClose()) { DAssert.notEmpty(keys, ErrorType.EMPTY, "keys is empty"); byte[] key_b = getKey(key); LockEntity lockEntity = lock(key); try { Meta metaV = getMeta(key_b); if (metaV == null) { checkTxCommit(); return; } start(); for (String mkey : keys) { byte[] mkey_b = mkey.getBytes(charset); Key vkey = new Key(key_b.length, key_b, metaV.getVersion(), mkey_b); byte[] value = getDB(vkey.convertBytes().toBytes(), SstColumnFamily.DEFAULT); if (value != null) { deleteDB(vkey.convertBytes().toBytes(), SstColumnFamily.DEFAULT); metaV.size = metaV.size - 1; } } putDB(key_b, metaV.convertMetaBytes().toBytes(), SstColumnFamily.META); commit(); } finally { unlock(lockEntity); release(); } checkTxCommit(); } catch (KitDBException e) { checkTxRollBack(); throw e; } }
RMap extends RCollection { public void remove(String key, String... keys) throws KitDBException { checkTxStart(); try (CloseLock ignored = checkClose()) { DAssert.notEmpty(keys, ErrorType.EMPTY, "keys is empty"); byte[] key_b = getKey(key); LockEntity lockEntity = lock(key); try { Meta metaV = getMeta(key_b); if (metaV == null) { checkTxCommit(); return; } start(); for (String mkey : keys) { byte[] mkey_b = mkey.getBytes(charset); Key vkey = new Key(key_b.length, key_b, metaV.getVersion(), mkey_b); byte[] value = getDB(vkey.convertBytes().toBytes(), SstColumnFamily.DEFAULT); if (value != null) { deleteDB(vkey.convertBytes().toBytes(), SstColumnFamily.DEFAULT); metaV.size = metaV.size - 1; } } putDB(key_b, metaV.convertMetaBytes().toBytes(), SstColumnFamily.META); commit(); } finally { unlock(lockEntity); release(); } checkTxCommit(); } catch (KitDBException e) { checkTxRollBack(); throw e; } } }
RMap extends RCollection { public void remove(String key, String... keys) throws KitDBException { checkTxStart(); try (CloseLock ignored = checkClose()) { DAssert.notEmpty(keys, ErrorType.EMPTY, "keys is empty"); byte[] key_b = getKey(key); LockEntity lockEntity = lock(key); try { Meta metaV = getMeta(key_b); if (metaV == null) { checkTxCommit(); return; } start(); for (String mkey : keys) { byte[] mkey_b = mkey.getBytes(charset); Key vkey = new Key(key_b.length, key_b, metaV.getVersion(), mkey_b); byte[] value = getDB(vkey.convertBytes().toBytes(), SstColumnFamily.DEFAULT); if (value != null) { deleteDB(vkey.convertBytes().toBytes(), SstColumnFamily.DEFAULT); metaV.size = metaV.size - 1; } } putDB(key_b, metaV.convertMetaBytes().toBytes(), SstColumnFamily.META); commit(); } finally { unlock(lockEntity); release(); } checkTxCommit(); } catch (KitDBException e) { checkTxRollBack(); throw e; } } protected  RMap(DB db); }
RMap extends RCollection { public void remove(String key, String... keys) throws KitDBException { checkTxStart(); try (CloseLock ignored = checkClose()) { DAssert.notEmpty(keys, ErrorType.EMPTY, "keys is empty"); byte[] key_b = getKey(key); LockEntity lockEntity = lock(key); try { Meta metaV = getMeta(key_b); if (metaV == null) { checkTxCommit(); return; } start(); for (String mkey : keys) { byte[] mkey_b = mkey.getBytes(charset); Key vkey = new Key(key_b.length, key_b, metaV.getVersion(), mkey_b); byte[] value = getDB(vkey.convertBytes().toBytes(), SstColumnFamily.DEFAULT); if (value != null) { deleteDB(vkey.convertBytes().toBytes(), SstColumnFamily.DEFAULT); metaV.size = metaV.size - 1; } } putDB(key_b, metaV.convertMetaBytes().toBytes(), SstColumnFamily.META); commit(); } finally { unlock(lockEntity); release(); } checkTxCommit(); } catch (KitDBException e) { checkTxRollBack(); throw e; } } protected  RMap(DB db); void put(String key, String mkey, byte[] value); void putTTL(String key, String mkey, byte[] value, int ttl); void put(String key, Map<String, byte[]> map); void putMayTTL(String key, int ttl, Map<String, byte[]> map); void putMayTTL(String key, int ttl, String mkey, byte[] value); Map<String, byte[]> get(String key, String... keys); byte[] get(String key, String mkey); void remove(String key, String... keys); @Override void delete(String key); @Override KeyIterator getKeyIterator(); void deleteFast(String key); @Override RIterator<RMap> iterator(String key); @Override Entry getEntry(RocksIterator iterator); @Override int getTtl(String key); @Override void delTtl(String key); @Override void ttl(String key, int ttl); @Override boolean isExist(String key); @Override int size(String key); }
RMap extends RCollection { public void remove(String key, String... keys) throws KitDBException { checkTxStart(); try (CloseLock ignored = checkClose()) { DAssert.notEmpty(keys, ErrorType.EMPTY, "keys is empty"); byte[] key_b = getKey(key); LockEntity lockEntity = lock(key); try { Meta metaV = getMeta(key_b); if (metaV == null) { checkTxCommit(); return; } start(); for (String mkey : keys) { byte[] mkey_b = mkey.getBytes(charset); Key vkey = new Key(key_b.length, key_b, metaV.getVersion(), mkey_b); byte[] value = getDB(vkey.convertBytes().toBytes(), SstColumnFamily.DEFAULT); if (value != null) { deleteDB(vkey.convertBytes().toBytes(), SstColumnFamily.DEFAULT); metaV.size = metaV.size - 1; } } putDB(key_b, metaV.convertMetaBytes().toBytes(), SstColumnFamily.META); commit(); } finally { unlock(lockEntity); release(); } checkTxCommit(); } catch (KitDBException e) { checkTxRollBack(); throw e; } } protected  RMap(DB db); void put(String key, String mkey, byte[] value); void putTTL(String key, String mkey, byte[] value, int ttl); void put(String key, Map<String, byte[]> map); void putMayTTL(String key, int ttl, Map<String, byte[]> map); void putMayTTL(String key, int ttl, String mkey, byte[] value); Map<String, byte[]> get(String key, String... keys); byte[] get(String key, String mkey); void remove(String key, String... keys); @Override void delete(String key); @Override KeyIterator getKeyIterator(); void deleteFast(String key); @Override RIterator<RMap> iterator(String key); @Override Entry getEntry(RocksIterator iterator); @Override int getTtl(String key); @Override void delTtl(String key); @Override void ttl(String key, int ttl); @Override boolean isExist(String key); @Override int size(String key); static byte[] HEAD_B; final static byte[] HEAD_KEY_B; }