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

 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的对象。

提前致谢。

汤姆

最佳答案

汤姆:

Redis是您最好的选择。我已经广泛使用它,并且它是具有最终一致性的数据结构服务器(不要与数据库服务器混淆)。它在具有备份文件存储的内存中,并且运行迅速。在redis.io上有更多详细信息。位于http://redis.io/commands的命令集也具有事务支持http://redis.io/topics/transactions

支持多种语言。 Java客户端可从https://github.com/xetorthio/jedis获得

关于java - 是否有可嵌入的事务性Java键值存储,并允许您覆盖对象而无需先删除它,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10232711/

10-11 22:38
查看更多