翻转的 DynamoDB 原子计数器
DynamoDB atomic counter that rolls over
我想要一个原子计数器,当它达到某个位置(键)的阈值时,它会重置回 1。
我可以毫无问题地递增,但如果可能的话,我希望它在翻转时是原子的。
CF 有:
"TicketNumberTable": {
"Type": "AWS::DynamoDB::Table",
"Properties": {
"AttributeDefinitions": [
{
"AttributeName": "location",
"AttributeType": "S"
}
],
"KeySchema": [
{
"AttributeName": "location",
"KeyType": "HASH"
}
],
"BillingMode": "PAY_PER_REQUEST",
"TableName": { "Fn::Join": [ "", [ "ticketnumber", { "Ref": "env" } ] ] }
}
}
如果计数器超过 100(例如),我将如何在此更新调用中添加滚动到 1?
目前我的代码是:
const params = {
TableName: process.env.TICKET_NUMBER_TABLE,
Key: {
'location': {
'S': 'somewhere'
}
},
UpdateExpression: 'ADD #counter :inc',
ExpressionAttributeNames: {
'#counter': 'counter'
},
ExpressionAttributeValues: {
':inc': {
'N': '1'
}
},
ReturnValues: 'UPDATED_NEW'
}
我觉得没有办法。也许只是将该值视为跟踪值 mod 100。:)
我想要一个原子计数器,当它达到某个位置(键)的阈值时,它会重置回 1。 我可以毫无问题地递增,但如果可能的话,我希望它在翻转时是原子的。
CF 有:
"TicketNumberTable": {
"Type": "AWS::DynamoDB::Table",
"Properties": {
"AttributeDefinitions": [
{
"AttributeName": "location",
"AttributeType": "S"
}
],
"KeySchema": [
{
"AttributeName": "location",
"KeyType": "HASH"
}
],
"BillingMode": "PAY_PER_REQUEST",
"TableName": { "Fn::Join": [ "", [ "ticketnumber", { "Ref": "env" } ] ] }
}
}
如果计数器超过 100(例如),我将如何在此更新调用中添加滚动到 1?
目前我的代码是:
const params = {
TableName: process.env.TICKET_NUMBER_TABLE,
Key: {
'location': {
'S': 'somewhere'
}
},
UpdateExpression: 'ADD #counter :inc',
ExpressionAttributeNames: {
'#counter': 'counter'
},
ExpressionAttributeValues: {
':inc': {
'N': '1'
}
},
ReturnValues: 'UPDATED_NEW'
}
我觉得没有办法。也许只是将该值视为跟踪值 mod 100。:)