Выдача ключей по кругу
Здравствуйте, коллеги.
Ситуация: Есть файл, в котором записаны сотни API_KEY (md5-хэш). Каждый с новой строки. Есть функция, которая читает этот файл, и выдаёт следующий API_KEY. Если доходит до конца начинает с начала. Т.е. выдаёт API_KEY по кругу. Состояние (порядковый номер последнего выданного ключа) хранит в Redis (key-value хранилище). https://gist.github.com/anonymous/1867bb9b944511fe7960
Всё было радужно, пока одновременных вызовов функции не стало слишком много (несколько сот раз в секунду). В таких условиях состояние не успевает перезаписаться поверх старого, когда уже следующий запрос читает его. Кусок лога Redis: https://gist.github.com/anonymous/1dfb63bfbf064d188dbd
Подскажите, пожалуйста, какие существуют варианты решения подобного вопроса (крутить по кругу строки)? Возможно в виде демона или чего-то подобного.
Пожелания:
- лёгкость интеграции и взаимодействия с php;
- высокая производительность (способность выдерживать 1000 запросов в секунду);
- минимальное использование ресурсов сервера;
Благодарю.