単純なデータベース (1 つのキー、1 つの数値) でカウンターを更新しようとしています。アトミック カウンターは自然な解決策のように思えますが、スレッド セーフな更新が必要です。つまり、更新が互いに干渉しないようにする必要があります。
この回答は、実際の書き込みを実行する前に、データが別の更新によって変更されていないことを再確認する必要があることを示唆しているようです。
私の質問は、データベースの現在の値を a で参照するにはどうすればよいConditionExpression
ですか? table
がオブジェクト (Python API) であると仮定するとdynamodb.Table
、これは私が書いたコードですupdate_item
:
table.update_item(
Key={
'key': my_key
},
UpdateExpression="set my_value = my_value + :inc",
ConditionExpression="my_value = ?????" # should be value in the db now
ExpressionAttributeValues={
':inc': my_increment,
},
ReturnValues="UPDATED_NEW"
)