RocksDB:如何在Java中使用TTL?

时间:2018-11-20 07:33:12

标签: rocksdb

我正在测试rocksdb for Java api。我将键值条目放入地图,然后等待20秒钟,然后从地图获得。为什么不删除该条目? 这是我的代码:

import org.rocksdb.Options;
import org.rocksdb.RocksDBException;
import org.rocksdb.TtlDB;

public class Test2 {
    public static void main(String[] args) throws Exception {
        TtlDB.loadLibrary();
        Options options = new Options()
                .setCreateIfMissing(true);


        TtlDB db = TtlDB.open(options, args[0],20,false);
        if(args.length > 3 && "put".equals(args[1])) {
            db.put(args[2].getBytes(), args[3].getBytes());
        }

        byte[] arr = db.get(args[2].getBytes());
        if(arr != null) {
            System.out.println(new String(arr));
        } else {
            System.out.println(arr);
        }
        System.out.println(db.get(args[2].getBytes()));
        Thread.sleep(21000);
        System.out.println(db.get(args[2].getBytes()));
        db.close();
    }
}

1 个答案:

答案 0 :(得分:0)

过期的TTL值仅以压缩方式删除:(时间戳+ ttl

https://github.com/facebook/rocksdb/wiki/Time-to-Live