pro tento případ použití můžete použít sady redis:
Pokud jsou časové úseky vždy v násobcích 15 minut, můžete to udělat takto:
1) Mějte univerzální sadu obsahující všechny časové sloty. Zde násobky 15.
sadd universal 08:00 08:15 08:30 08:45 09:00 ...
2) Pro každého člena týmu mějte samostatnou sadu rezervovaných slotů. Pro člena1 08:15-08:50 musíte ho zasnoubit do 09:00 .
sadd member_1 08:15 08:30 08:45 09:00
3) Podobně postupujte i u ostatních členů. člen2 08:30-09:30
sadd member_2 08:30 08:45 09:00 09:30
4) Nyní můžete pro každého člena získat volné sloty pomocí
sdiff universal member_1
5) Pro celkové sloty zdarma. Musíte provést dvě operace.
result = sinter member_1 member_2 ...
sdiff universal result
protnutí všech členů sady poskytne časové úseky, ve kterých jsou všichni uživatelé zaneprázdněni. Takže ty sloty nemůžete přidělit.
Provedením operace odečítání (rozdílu) s univerzální sadou získáte celkový počet slotů, které lze volně obsadit.
Snad to pomůže.