Держите счётчик остатка в одном атомарном месте и уменьшайте его атомарно — через Redis DECR (или Lua-скрипт), возвращающий оставшееся значение. Если результат < 0, этот запрос проиграл; база данных никогда не является точкой контроля конкурентности. Всё остальное — про то, как дёшево отсечь остальные 999 000 запросов.
