você pode usar os conjuntos do redis para este caso de uso:
Se os intervalos de tempo estiverem sempre em múltiplos de 15 minutos, você pode fazer assim:
1) Tenha um conjunto universal contendo todos os horários. Aqui múltiplos de 15.
sadd universal 08:00 08:15 08:30 08:45 09:00 ...
2) Para cada membro da equipe, tenha um conjunto separado para os slots reservados para eles. Para membro1 08:15-08:50 você tem que deixá-lo noivo até 09:00 .
sadd member_1 08:15 08:30 08:45 09:00
3) Da mesma forma faça para outros membros também. membro2 08:30-09:30
sadd member_2 08:30 08:45 09:00 09:30
4) Agora, para cada membro, você pode obter os slots gratuitos usando
sdiff universal member_1
5) Para os slots gerais grátis. Você tem que fazer duas operações.
result = sinter member_1 member_2 ...
sdiff universal result
a interseção de todo o conjunto de membros fornecerá os intervalos de tempo em que todos os usuários estão ocupados. Então você não pode alocar esses slots.
Fazer uma operação de subtração (diff) com o conjunto universal fornecerá os slots gerais que estão livres para serem ocupados.
Espero que isto ajude.