一次性代码的原子/安全服务


Atomic/safe serving of single-use codes

我有一个与我合作的电子商务网站的一次性折扣代码列表。我需要在我的网站上建立一个页面,我的用户可以在那里填写表格,然后会得到其中一个代码。这些代码是预先确定的,并以文本文件的形式发送给我;我不能在飞行中生成它们。我需要找出从列表中获取未使用代码的最佳方法,然后同时将其从列表中删除(或更新标志将其标记为已使用),以避免向两个人提供相同代码的可能性。换句话说,类似于队列的东西,在那里我可以原子地从队列中删除一个项目。

这个网络应用程序将在AWS上运行,目前的代码是Python(尽管如果必要的话,我可能会使用其他东西;PHP会很容易)。理想情况下,我会使用AWS服务或mysql来完成这项工作,但如果其他解决方案不需要集成,我对它们持开放态度。由于我想到了"队列",SQS突然出现在我的脑海中,但这显然不是它的目的(例如,队列中剩余消息的14天限制对我来说肯定不起作用)。虽然我预计流量会很小(这意味着即使是真正的黑客解决方案也可能奏效),但我宁愿学习如何在规模上做到这一点。

我不能给出实际的代码示例,但最简单的方法之一就是在文件中使用增量计数器,所以类似

0
code1
code2
code3
etc

每次使用代码时跳过那么多行。

您也可以在数据库中非常简单地执行此操作

AmazonDynamoDB是一个来自AWS的快速NoSQL数据库,它可能非常适合这个用例。建立一个数据库表很容易,您可以将代码加载到其中。DynamoDB有一个DeleteItem操作,它还允许您在相同的原子操作中检索数据(通过将ReturnValues参数设置为ALL_OLD)。这将允许您一次性获取和删除代码,因此其他请求/进程无法获取相同的代码。AWS发布官方SDK来帮助您连接和使用其服务,包括Python和PHP SDK(请参阅http://aws.amazon.com/tools/)。