перечитал вопрос - такое лучше решить полем free_places, которое делать +=1 или -=1 на уровне бд делать. и быстрее и меньше шансов влезть по-середине. но для полной надежности надо писать redis-lock на покупку билета, чтобы не купить то, чего уже нет в базе