Подтвердить что ты не робот

Приложение Dalli против Redis-Store для Rails

Я использую Dalli до сих пор для кеширования, и сегодня я наткнулся на Redis -Store.

Мне интересно, нужно ли переключаться на redisstore. Мое приложение уже использует redis для определенных вещей, поэтому у меня есть redis-сервер, который довольно большой (с точки зрения ресурсов), и у меня также есть еще один сервер memcached. Поэтому, если я переключусь на redis-store, это будет означать, что я могу удалить сервер memcached (меньше сервера для поддержания + меньше стоимости).

Кто-нибудь сделал сравнение этих двух решений.

  • Производительность
  • Является ли это заменой (я могу переключаться между этими двумя в любое время без изменения кода)
  • Любые другие вещи, о которых я должен знать.
4b9b3361

Ответ 1

Redis может использоваться как кэш или как постоянный магазин, но если вы попытаетесь смешать их, вы можете получить "интересные проблемы".

Когда у вас есть memcached, у вас будет максимальный объем памяти для процесса, поэтому, когда memcached будет заполнен, он автоматически удалит наименее недавно используемые записи, чтобы освободить место для новых записей.

Вы можете настроить Redis на такое поведение, но вы не хотите этого делать, если используете Redis для постоянного хранения, потому что в этом случае вы потенциально потеряете ключи, которые должны быть постоянными.

Итак, если вы используете постоянное хранилище для Redis, вам нужно будет иметь два разных процесса Redis: один для ваших постоянных ключей, один для кеширования. Конечно, у вас всегда может быть только один процесс и установить время истечения срока действия для каждого элемента кэша, но никто бы не заверил вас, что вы не достигли предела памяти до того, как они истекут, и вы потеряете данные, поэтому на практике вам понадобятся два процесса. Кроме того, если вы устанавливаете конфигурацию ведущего/ведомого для ваших постоянных данных и сохраняете кеш на одном сервере, вы в основном тратите впустую RAM, поэтому отдельные процессы - это путь.

О производительности, как redis, так и memcached, являются ОЧЕНЬ эффективными, и в разных тестах они находятся в одном диапазоне, когда дело доходит до получения/извлечения данных, но memcached лучше, когда вам нужен только кеш.

Почему это так? Прежде всего, поскольку memcached имеет только одну миссию, которая хранит ключ/значения, у нее нет никаких накладных расходов, когда дело доходит до хранения метаданных. Redis, с другой стороны, предлагает разные структуры данных, поэтому он хранит больше метаданных, которые каждый ключ. Одним из примеров этого является: "намного дешевле" хранить данные в хеше в Redis вместо использования отдельных ключей. Вы не получите этого на memcached, поскольку есть только один тип данных. Это означает, что с тем же объемом памяти на ваших серверах вы можете хранить больше данных на memcached, чем на redis. Если у вас относительно небольшая установка, вам все равно, но как только вы начнете видеть рост, поверьте мне, вы захотите сохранить эти данные под контролем.

Итак, насколько мне нравится Redis, я предпочитаю иметь memcached для своих потребностей в кешировании и redis для своих постоянных требований хранения/временного хранения/очереди. Я все еще использую redis как "кеш", но не временный с истечением срока действия, а как кэш-память, чтобы сохранить чтение из более дорогого хранилища. Например, я сохраняю сопоставление между идентификаторами пользователей и псевдонимами в Redis. Я никогда не заканчиваю эти сопоставления, поэтому Редис - идеальное место для него.

В случае, если вы имеете дело с небольшим количеством данных, тогда может возникнуть смысл вашей идеи иметь единую технологию для всего, но как только вы начнете расти на несколько сотен мегабайт, я бы сказал, идите с обоими из них.