我希望能够做这样的事情:
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/