LRU-кэш на PHP 8.5 для Identity Map: 15+ млн. операций в сек

Wait 5 sec.

LRU на PHP — задача, которую, вроде бы, уже все кому не лень решили вдоль и поперёк. Канонический рецепт: HashMap + doubly linked list, — работает, читается, всем нравится. Но когда начинаешь мерить, оказывается, что большинство реализаций выдают 2–5 млн. ops/sec. Для веба это нормально, а вот для highload — уже нет. Особенно когда LRU — это не «где-то в кэше Redis», а фундамент Identity Map, который сидит прямо в hot path каждого запроса. Читать далее