Skip to main content

RocksDB - Time To Live

TTL (Time-to-Live) là một tính năng trong RocksDB cho phép bạn đặt thời gian sống cho một cặp key-value. Khi giá trị TTL hết hạn, RocksDB tự động xóa key-value tương ứng khỏi cơ sở dữ liệu.

Dưới đây là một ví dụ về việc sử dụng TTL trong RocksDB bằng Java:

import org.rocksdb.*;

public class RocksDBTTLExample {

    public static void main(String[] args) {
        RocksDB.loadLibrary();
        try (final Options options = new Options().setCreateIfMissing(true);
             final RocksDB db = RocksDB.open(options, "/path/to/database")) {
            final ColumnFamilyHandle cfHandle = db.getDefaultColumnFamily();

            byte[] key = "myKey".getBytes();
            byte[] value = "myValue".getBytes();
            int ttl = 3600; // TTL in seconds

            db.put(cfHandle, key, value, ttl);
        } catch (RocksDBException e) {
            // Xử lý lỗi khi ghi dữ liệu không thành công
        }
    }
}

Trong ví dụ trên, chúng ta sử dụng put() để ghi một cặp key-value vào RocksDB với một giá trị TTL (Time-to-Live) được đặt là 3600 giây (1 giờ). Khi giá trị TTL hết hạn, RocksDB tự động xóa key-value tương ứng.

Đối với việc sử dụng TTL trong RocksDB bằng C++, dưới đây là một ví dụ:

#include "rocksdb/db.h"

int main() {
    rocksdb::DB* db;
    rocksdb::Options options;
    options.create_if_missing = true;
    rocksdb::Status status = rocksdb::DB::Open(options, "/path/to/database", &db);
    if (status.ok()) {
        rocksdb::WriteOptions writeOptions;
        rocksdb::Slice key = "myKey";
        rocksdb::Slice value = "myValue";
        int ttl = 3600; // TTL in seconds
        rocksdb::Status writeStatus = db->Put(writeOptions, key, value, rocksdb::WriteTTL(ttl));
        if (!writeStatus.ok()) {
            // Xử lý lỗi khi ghi dữ liệu không thành công
        }
    } else {
        // Xử lý lỗi khi mở cơ sở dữ liệu không thành công
    }
    delete db;
    return 0;
}

Trong ví dụ trên, chúng ta sử dụng Put() để ghi một cặp key-value vào RocksDB với một giá trị TTL (Time-to-Live) được đặt là 3600 giây (1 giờ). Khi giá trị TTL hết hạn, RocksDB tự động xóa key-value tương ứng.

Đó là một ví dụ về việc sử dụng TTL trong RocksDB bằng Java và C++.