【问题标题】:java embedded key-value data store for counters用于计数器的 Java 嵌入式键值数据存储
【发布时间】:2014-10-13 09:47:40
【问题描述】:

我正在寻找一个嵌入的键值数据存储

  1. 有 Java API
  2. 易于操作的计数器(又名 SET value=value+10 WHERE key="k")
  3. 支持多线程客户端
  4. 高性能

我找到了LevelDBJni,但它是为简单的K-V操作而设计的,对计数器不友好。有没有更好的解决方案?

谢谢。

【问题讨论】:

    标签: java embedded-database key-value-store


    【解决方案1】:

    借助 Java 库,您可以使用 MapAtomicInteger 作为值。

    在以下示例中,我使用 String 作为键的数据类型。

    例如

    Map<String, AtomicInteger> kvStore = new ...
    

    要操作计数器,您可以使用

    kvStore.get("...").addAndGet(10);
    

    同时检索更新的值

    AtomicInteger value = kvStore.get("...").addAndGet(10);
    

    由于AtomicInteger 是为并发设计的,所以多线程环境应该没问题。

    我不能告诉你它的性能如何,因为我不知道你的具体要求,所以你必须自己确定。

    【讨论】:

      【解决方案2】:

      嵌入式 Java DB count-db (https://github.com/koendeschacht/count-db) 在其 API 中提供了一个 increaseCount 方法,应该可以解决这个用例。

      【讨论】:

        【解决方案3】:

        看看http://www.mapdb.org。它的性能非常高,并提供了非常熟悉的 API(Java Map)。

        【讨论】:

          猜你喜欢
          • 2012-04-04
          • 2017-12-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-20
          • 1970-01-01
          相关资源
          最近更新 更多