можете да използвате набори на redis за този случай на употреба:
Ако времевите интервали винаги са кратни на 15 минути, можете да направите това:
1) Имайте универсален комплект, съдържащ всички времеви слотове. Тук кратни на 15.
sadd universal 08:00 08:15 08:30 08:45 09:00 ...
2) За всеки член в екипа има отделен комплект за резервираните за него слотове. За член 1 08:15-08:50 трябва да го сгодиш до 09:00 .
sadd member_1 08:15 08:30 08:45 09:00
3) По същия начин направете и други членове. член 2 08:30-09:30
sadd member_2 08:30 08:45 09:00 09:30
4) Сега за всеки член можете да получите безплатните слотове с помощта на
sdiff universal member_1
5) За общите слотове безплатно. Трябва да направите две операции.
result = sinter member_1 member_2 ...
sdiff universal result
пресичането на целия набор от членове ще даде времеви интервали, в които всички потребители са заети. Така че не можете да разпределите тези слотове.
Извършването на операция на изваждане (разлика) с универсалния набор ще ви даде общите слотове, които могат да бъдат заети свободно.
Надявам се това да помогне.