Назад | Перейти на главную страницу

memcached против tmpfs

Есть ли преимущества использования memcached локально за использование смонтированного tmpfs?

Может быть, когда система кэширования памяти находится на одном хосте, лучше использовать иерархию файлов в tmpfs, которая дает возможность использовать стандартные системные API и инструменты обработки файлов?

Мое чутье подсказывает, что memcached будет заметно более эффективным, поскольку файловая система будет поддерживать флаги владения и разрешений для каждого объекта при каждом создании и проверять их для каждого файла, открытого для чтения. Кроме того, вы, вероятно, обнаружите, что структуры memcached лучше индексируются, чем файловая система tmpfs, в которой IIRC использует неупорядоченный линейный список для списков каталогов, поэтому ему приходится сканировать (в среднем) половину списка каталогов, чтобы найти объект, вместо того, чтобы иметь возможность сделать более эффективный поиск по принципу «разделяй и властвуй».

Я предполагаю, что выше вы имеете в виду хранение множества кешированных результатов, большинство из которых имеют относительно небольшой размер, каждый в своем собственном файле в файловой системе на основе RAM. Если вы имеете в виду хранить много результатов в одном файле на tmpfs, тогда база данных sqlite на основе памяти будет более эффективной и избавит вас от необходимости изобретать колесо с точки зрения управления индексами и эффективного поиска.

Конечно, как вы говорите, возможность манипулировать вашим кешем с помощью любого инструмента, который понимает файловые системы, может быть достаточно сильным преимуществом, чтобы сделать большинство аргументов эффективности спорными.

Какой метод лучше, конечно, будет во многом зависеть от того, для чего вы его используете, поэтому было бы неплохо добавить в вопрос более подробную информацию о вашем проекте. В качестве запроса оптимизации кода / данных это могут быть вопросы для StackOverflow, а не для ServerFault (администратор сервера вряд ли сможет выбрать вариант хранения кеша проекта, если только программисты не реализовали более одного варианта на выбор) - вы можете найти там людей, которые протестировали memcached / sqlite / tmpfs / custom_solution для своего проекта и могут дать вам некоторые полезные сравнительные данные.