是否存在可嵌入的事务性java键值存储,允许您在不先删除对象的情况下覆盖该对象

时间:2012-04-19 16:38:23

标签: java nosql key-value

我希望能够做到这样的事情:

 db.createDbIfNotExists("/some/file");

 db.doInTransaction(new DbTransaction() {
     public void do() {

         for(KeyValue kv : listOfKvs) {
            ...some code that might fail...
            db.save(kv.getKey(), kv.getObject());
         }
     }  
 }

如果已存在任何键,我希望新对象覆盖该键的旧对象。我不想加载它并将其删除或加载并更新它。

如果在事务期间我的代码抛出异常,我希望写回滚。

它需要能够在大约2/3分钟内写出500,000个不到1k的物体。

提前致谢。

汤姆

2 个答案:

答案 0 :(得分:0)

汤姆:

Redis是你最好的选择。我已广泛使用它,它是一个数据结构服务器(不要与数据库服务器混淆),它具有最终的一致性。它在内存中有一个支持文件存储,它非常快速。有关redis.io的更多详情。命令集位于http://redis.io/commands,还有事务支持http://redis.io/topics/transactions

支持多种语言。 https://github.com/xetorthio/jedis

提供了一个Java客户端

答案 1 :(得分:0)

尝试使用Scalien,它具有Java驱动程序,可以一致地复制并支持ACID事务。 http://scalien.com/products/