Система бронирования | Редис

Я планирую использовать оболочку StackExchange.Redis c# для своего механизма бронирования. Но меня беспокоят бронирования, которые будут зарегистрированы в одном и том же диапазоне дат.

Как я могу гарантировать, что никакие перекрывающиеся заказы не могут быть созданы?


person Identity    schedule 30.03.2016    source источник


Ответы (1)


Вам нужно будет использовать уникальный ключ для ваших данных. 2 основных решения для этого:

РЕШЕНИЕ 1. Сохраните уникальный размер в REDIS, чтобы отслеживать количество бронирований.

  1. имя ключа: bookings:size
  2. при каждом бронировании получите бронирование: размер, а затем add +1 после бронирования.
  3. используйте бронирование: размер как ключ, подобный этому

    заказы:заказ-1

    заказы:заказ-2

    заказы:заказ-3

РЕШЕНИЕ 2: сгенерируйте уникальный ключ в своей программе 1. сгенерируйте уникальный ключ в своем коде (лучше всего использовать безопасный генератор UUID) 2. используйте его следующим образом

бронирование: заказ-123GSDDG34TERG34T34EG45G5F54Y456H56HH57J45VF43

заказы: заказ-12234535646323535756854778566746756HH57J45VF43

заказы: заказ-7777777777777777777743ERGSDFG4556H6776H76H7H7H

Против? Я действительно предпочитаю Решение 2, потому что это лучший способ получить уникальные ключи, не запрашивая сервер. Это обычная практика отдыха. Также позволяет разделить ключ на осколке сервера Redis.... и т.д.

person jeorfevre    schedule 30.03.2016