Ответ 1
Как автор spymemcached, я немного предвзятый, но я бы сказал это по следующим причинам:
Разработан с нуля, чтобы быть неблокируемым везде.
Когда вы запрашиваете данные, выдаете набор и т.д.... там одна крошечная параллельная вставка очереди, и вы получаете будущее для блокировки результатов (с некоторыми удобными методами для обычных случаев, таких как get).
Оптимизировано агрессивно
Вы можете прочитать больше на моей странице optimizations, но я делаю оптимизацию всего приложения.
Я по-прежнему хорошо разбираюсь в микро-тестах, но для сравнения с другим клиентом вам нужно улаживать нереалистичные шаблоны использования (например, ожидание ответа на каждую заданную операцию или блокировки здания вокруг позволяет им избежать делая оптимизацию пакетов).
Проверено навязчиво
Я поддерживаю довольно строгий набор тестов с отчетами о покрытии в каждом выпуске.
Ошибки все еще проскальзывают, но они обычно довольно незначительные, и клиент продолжает улучшаться.:)
Хорошо документировано
Страница examples содержит краткое введение, но javadoc идет в огромные подробности.
Предоставляет абстракции высокого уровня
У меня есть интерфейс Map к кешу, а также функциональная абстракция CAS. Оба бинарных и текстовых поддерживают механизм incr-with-default (предоставляемый двоичным протоколом, но довольно сложный в тексте).
Сохраняет характеристики
Я выполняю много работы на самом сервере, поэтому я не отстаю от изменений протокола.
Я сделал первые реализации сервера бинарного протокола (как тестовый сервер, так и сам memcached), и это был первый готовый к производству клиент для его поддержки и делает это первоклассным.
У меня также есть поддержка нескольких алгоритмов хеширования и алгоритмов распределения node, все из которых хорошо протестированы для каждой сборки. Вы можете сделать хэш-код с запасом кетама, или производную, использующую FNV-1 (или даже собственное хеширование строки java), если вы хотите повысить производительность.