możesz użyć zestawów redis dla tego przypadku użycia:
Jeśli przedziały czasowe są zawsze wielokrotnością 15 minut, możesz to zrobić w ten sposób:
1) Miej uniwersalny zestaw zawierający wszystkie przedziały czasowe. Tutaj wielokrotności 15.
sadd universal 08:00 08:15 08:30 08:45 09:00 ...
2) Dla każdego członka drużyny macie osobny zestaw na zarezerwowane dla niego sloty. Dla członka1 08:15-08:50 musisz go zaręczyć do 09:00 .
sadd member_1 08:15 08:30 08:45 09:00
3) Podobnie zrób dla innych członków. członek2 08:30-09:30
sadd member_2 08:30 08:45 09:00 09:30
4) Teraz dla każdego członka możesz otrzymać darmowe sloty za pomocą
sdiff universal member_1
5) Dla wszystkich wolnych slotów. Musisz wykonać dwie operacje.
result = sinter member_1 member_2 ...
sdiff universal result
przecięcie całego zestawu członków da przedziały czasowe, w których wszyscy użytkownicy są zajęci. Więc nie możesz przydzielić tych slotów.
Wykonanie operacji odejmowania (różnicy) z zestawem uniwersalnym da ci całkowitą liczbę wolnych miejsc, które można zajmować.
Mam nadzieję że to pomoże.