LRU-кэш это популярная структура данных, хранящая пары ключ-значение, но в отличие от обычной "мэпы" ограниченная по размеру - более старые (least-recently-used) записи пропадают при переполнении. Он популярен и на собеседованиях (видимо как альтернатива заезженным алгоритмам сортировок).…
LRU на PHP — задача, которую, вроде бы, уже все кому не лень решили вдоль и поперёк. Канонический рецепт: HashMap + doubly linked list, — работает, читается, всем нравится. Но когда начинаешь мерить, оказывается, что большинство реализаций выдают 2–5 млн. ops/sec. Для веба это нормально, а вот для highload — уже нет. Особенно когда LRU — это не «где-то в кэше Redis», а фундамент Identity Map, который сидит прямо в hot path каждого запроса. Читать далее
In memcached before 1.5.14, a NULL pointer dereference was found in the "lru mode" and "lru temp_ttl" commands. This causes a denial of service when parsing crafted lru command messages in process_lru_command in memcached.c.
Кэш глазами «чайника»: Кэш – это комплексная система. Соответственно, под разными углами результат может лежать как в действительной, так и в мнимой области. Очень важно понимать разницу между тем, что мы ждем и тем, что есть на самом деле. Давайте прокрутим полный оборот ситуаций. Tl;dr: добавляя в архитектуру кэш важно явно осознавать, что кэш может быть средством дестабилизации системы под нагрузкой. Смотрите конец статьи. Читать дальше →