du kan använda redis uppsättningar för detta användningsfall:
Om tidsluckorna alltid är i multiplar av 15 minuter kan du göra så här:
1) Ha en universell uppsättning som innehåller alla tidsluckor. Här multiplar av 15.
sadd universal 08:00 08:15 08:30 08:45 09:00 ...
2) För varje medlem i laget har en separat uppsättning för de platser som är bokade för dem. För medlem 1 08:15-08:50 du måste förlova honom till 09:00 .
sadd member_1 08:15 08:30 08:45 09:00
3) Gör samma sak för andra medlemmar också. medlem2 08:30-09:30
sadd member_2 08:30 08:45 09:00 09:30
4) Nu för varje medlem kan du få gratisslots med
sdiff universal member_1
5) För den övergripande slots gratis. Du måste göra två operationer.
result = sinter member_1 member_2 ...
sdiff universal result
korsar alla medlemmars set kommer att ge tidsluckor där alla användare är upptagna. Så du kan inte tilldela dessa platser.
Genom att subtrahera (diff) operation med den universella uppsättningen får du de totala platserna som är fria att upptas.
Hoppas det här hjälper.