【发布时间】:2016-03-30 10:41:46
【问题描述】:
我计划为我的预订引擎使用 StackExchange.Redis c# 包装器。 但我担心会在同一日期范围内注册的预订。
如何确保不会创建重叠订单?
【问题讨论】:
我计划为我的预订引擎使用 StackExchange.Redis c# 包装器。 但我担心会在同一日期范围内注册的预订。
如何确保不会创建重叠订单?
【问题讨论】:
您必须为您的数据使用唯一的密钥。 2个主要解决方案:
解决方案 1:在 REDIS 中存储唯一大小 跟踪预订号码
bookings:size
add +1。像这样使用 booking:size 作为键
bookings:order-1
bookings:order-2
bookings:order-3
解决方案 2:在您的程序中生成唯一密钥 1. 在你的代码中生成一个唯一的密钥(最好使用安全的 UUID 生成器) 2. 像这样使用它
预订:order-123GSDDG34TERG34T34EG45G5F54Y456H56HH57J45VF43
预订:order-12234535646323535756854778566746756HH57J45VF43
预订:order-7777777777777777777743ERGSDFG4556H6776H76H7H7H
对比? 我真的更喜欢 Solution2,因为它是在不要求服务器的情况下拥有唯一密钥的最佳方式。这是一种常见的休息练习。还允许在 redis 服务器的分片上拆分密钥......等等。
【讨论】: