DynamoDB -如何检索和删除(弹出)项



我正在开发一个用Flask编写的应用程序,并由Amazon的DynamoDB支持,通过boto访问。

对于一个特定的用例,我们需要从表中检索一个值,然后使它对其他用户不可用。

但是,通过检索然后删除该值,在检索和删除之间可能会发生竞争条件。

是否有办法从表中检索一个项目,并立即以原子方式删除或更新它?

如果你的逻辑:

  1. 获取项目
  2. 删除

没有任何额外的逻辑来确定是否应该删除,然后你可以立即发送删除请求,这里是一个例子(我没有检查它,主要取自:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LowLevelJavaItemCRUD.html)

HashMap<String, AttributeValue> key = new HashMap<String, AttributeValue>();
key.put("Id", new AttributeValue().withN("101"));
DeleteItemRequest deleteItemRequest = new DeleteItemRequest()
    .withTableName(tableName)
    .withKey(key)
    .withReturnValues(ReturnValue.ALL_OLD);
DeleteItemResult deleteItemResult = client.deleteItem(deleteItemRequest);
Map<String,AttributeValue> deletedItem = deleteItemResult.getAttributes();

文档:

withReturnValues

getAttributes

相关内容

  • 没有找到相关文章

最新更新