FireflyD:基于 JVM 的键值存储引擎


FireflyDB 是一种快速、线程安全、基于 JVM 的键值存储引擎,具有微秒级延迟。

FireflyDB 的读取速度比具有类似架构的Bitcask快 20 倍,写入速度快 10 倍。

FireflyDB是基于哈希的,并放弃范围查询以实现高吞吐量和低延迟。因此,它的写入速度比LevelDB (Google) 和RocksDB (Facebook) 快约 100 倍。

FireflyDB 依赖于合理的默认值,并且不公开许多配置选项。FireflyDB 的设计经过合理权衡以实现高性能:

  1. 所有key都必须适合内存。这是所有基于哈希的存储引擎的权衡。即使最大密钥大小为 32KB,FireflyDB 也可以在每 1GB 内存中存储 32,000 多个密钥。
  2. FireflyDB 不支持范围查询。
  3. 最大key大小为 32768 字节或 32KB。
  4. 最大值大小为 2,147,483,647 字节或 2.14 GB。

<dependency>
    <groupId>com.sahilbondre</groupId>
    <artifactId>fireflydb</artifactId>
    <version>0.1.1</version>
</dependency>

FireflyDB fireflyDB=FireflyDB.getInstance("path/to/db");
    fireflyDB.start();

// Write
    byte[]key=
"testKey".getBytes();
    byte[]value=
"testValue".getBytes();

    fireflyDB.put(key,value);

// Read
    byte[]result=fireflyDB.get(key);

// 压实 ;
// FireflyDB 会自动压缩,但也可以按需触发。
    fireflyDB.compact();

    fireflyDB.stop();