【问题标题】:RocksDB: how to use ttl in java?RocksDB:如何在 java 中使用 ttl?
【发布时间】:2018-11-20 07:33:11
【问题描述】:

我正在测试rocksdb 的java api。我在map中放了一个key-value entry,然后等待20s,然后从map中获取。为什么条目没有被删除? 这是我的代码:

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();
    }
}

【问题讨论】:

标签: rocksdb


【解决方案1】:

仅在压缩中删除过期的 TTL 值:(Timestamp + ttl

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多