Memcached, Redis или Couchbase
У меня есть сервер Debian с ОЗУ 16GB, который я использую с nginx и несколькими тяжелыми базами данных mysql и некоторыми пользовательскими приложениями php. Я хотел бы реализовать кэш памяти между Mysql и PHP, но базы данных слишком велики для хранения всего в ОЗУ. Я думаю, что кэш LRU может быть лучше, насколько я исследую. Это исключает Redis? Вы также рассмотрение.
4 ответов
предположим, что существует уникальный сервер, на котором работают экземпляры nginx + php + mysql с некоторой оставшейся свободной ОЗУ, самый простой способ использовать эту ОЗУ для кэширования данных-просто увеличить буферные кэши экземпляров mysql. Базы данных уже используют LRU-подобные механизмы для обработки своих буферов.
теперь, если вам нужно переместить часть обработки из баз данных, то предварительное кэширование может быть вариантом. Прежде чем говорить о memcached / redis, кэш общей памяти, интегрированный с php например, APC будет эффективен при условии, что рассматривается только один сервер (фактически более эффективный, чем redis/memcached).
Как memcached, так и redis можно рассматривать для выполнения удаленного кэширования (т. е. для совместного использования кэша между различными узлами). Я бы не исключил redis для этого: его можно легко настроить для этой цели. Оба позволят определить ограничение памяти и обрабатывать кэш с LRU-подобным поведением.
однако я бы не использовал couchbase здесь, что является elastic (т. е. предполагается использовать на нескольких узлах) хранилище ключей/значений NoSQL (т. е. не кэш). Вероятно, вы могли бы переместить некоторые данные из своих экземпляров mysql в кластер couchbase, но использовать его только для кэширования-это слишком инженерная IMO.
мы изначально использовали memcached для кэширования данных.В memcahed секционирование данных для разных приложений под разными ведрами было реальной проблемой.Также у нас есть требование, чтобы сбросить данные с одного ведра.Еще одним требованием является мониторинг данных.Мы переехали в CouchBase и используем ведро стиля memcahed.я думаю, что его гораздо более гибким и эффективным использовать Couchbase memcache стиль ведро для кэширования, а не с помощью memcahe.
вы когда-нибудь думали о том, чтобы переместить базы данных полностью в ОЗУ, используя одно из решений NoSQL в памяти с настойчивостью? Это может занять меньше места, чем исходная база данных MySQL, потому что многие решения NoSQL обычно имеют меньше места, чем базы данных SQL. Кроме того, если логика на стороне сервера очень важна для вас, попробуйте Tarantool, поскольку он имеет Lua-скрипты на борту и должен иметь довольно небольшой объем памяти. В моих случаях те же данные в Tarantool занимают в два раза меньше, чем в Для MySQL. Это связано с тем, что они имеют небольшие накладные расходы на строку и поле и используют messagepack для хранения данных.
Как отметил Мэтт Ингентрон, и Хари отметил, что Couchbase поддерживает работу в качестве прямой замены Memcached. Couchbase использует memcached неэластичным способом, так как в каждом узле, участвующем в кластере memcache, сдержан без сохранения, т. е. просто кэш, но couchbase также предлагает типы ведра "Couchbase", которые обеспечивают сохранение. Membase также является частью кода, поэтому Couchbase не только обслуживает данные с диска, но и из ОЗУ и сохраняет их там при репликации к другим узлам и сохраняющимся на диске по мере изменения применяются. Я бы очень рекомендовал Couchbase 3.x как для кэширования, так и для сохранения в одном или нескольких следах, если вам нужен только слой кэширования, отдельный от слоя сохранения.