我希望能够做到这样的事情:
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的物体。
提前致谢。
汤姆
答案 0 :(得分:0)
汤姆:
Redis是你最好的选择。我已广泛使用它,它是一个数据结构服务器(不要与数据库服务器混淆),它具有最终的一致性。它在内存中有一个支持文件存储,它非常快速。有关redis.io的更多详情。命令集位于http://redis.io/commands,还有事务支持http://redis.io/topics/transactions
提供了一个Java客户端答案 1 :(得分:0)
尝试使用Scalien,它具有Java驱动程序,可以一致地复制并支持ACID事务。 http://scalien.com/products/