Его нужно лайкнуть или пропустить.
Именно, отправляете на API запрос в нужном формате.
Как они тогда следующее фото выбирают?
Рандомно в твоем округе. Ну и имея разные доп алгоритмы.
Если я правильно понимаю, то там радиусами забирается 500 - 2км ... 20 км и уже на рандом.
Каждый запрос и каждого фото уникален?
Нет причин не верить в это. Причем алгоритмы тиндера, если ты не в блэклисте, настроены так, что тебе будет выпадать дубль человека, которого ты не лайкнул, но он лайкнул тебя, но с другим фото.
Это же невозможно кэшировать или оптимизировать.
Вот тут я бы поспорил, возможно вы смотрите на сервис как монолит с 3-5 млн пользователей.
А что, если для функционирования поиска нужен только сервер, который обслуживает определенный округ? Значит оптимизировать возможно. Верно?
А что если загнать все это в redis с его функциями ГИС - тоже возможно ( там еще бит карты хорошо работают, почитайте документацию и найдете для себя применение)? А это значит что и оптимизировать можно и кэшировать.