2016-01-01 7 views
1

Мне нужно хранить записи 32M в Redis 3.0.1, для каждой записи требуется около 422 КБ. В общей сложности около 13 ГБ информации.Big Redis setup

Информация хранится на диске в zped hashlist и сериализована в улыбке jackson. Я использую Java 6, Jedis и AIX.

У меня есть несколько вопросов:

  1. Означает ли это, что процесс Redis нуждается 13GB или RAM?
  2. Является ли это управляемым размером для одного экземпляра или вы хотите установить кластер? Я думаю, у нас может быть до 4 серверов. Это означало бы пересмотр всего проекта и дат, поэтому, пожалуйста, рассмотрите другие управленческие воздействия на этот вопрос.
  3. Есть ли лучший способ хранения этого объема данных?

Благодаря

Carlos

+2

Является ли ваша математика здесь? 422KB x 32,000,000 = 13504000000KB/1024 = 13187500MB/1000 = 13187GB – Alex

+1

Вы являетесь шаблоном запроса данных, это невозможно узнать, если вам нужна его в памяти (Redis) по какой-либо причине или на диске (RDBMS/NoSQL) и т. д., не зная, как вам нужно запрашивать эти данные. Любая из этих вещей будет работать, но каждая из них лучше подходит для конкретного случая использования – Alex

+0

@Alex Кроме того, OP должен учитывать значения gzipping ... –

ответ

0

Даже если вы используете Redis Cluster, все ваши данные должны помещаться в памяти. С 13TB данными, указанными Алексом, и ограниченными 4 серверами, как вы сказали, это означает, что каждый сервер должен иметь более 4 ТБ ОЗУ ...

Кроме того, Redis сохраняет данные в памяти в формате, который оптимизированный для скорости, и поэтому не пытается очень сильно уменьшить их размер. Таким образом, на практике может потребоваться более 13 ТБ. Вот почему я бы не рекомендовал Redis в этом случае, или, по крайней мере, не только Redis. Возможно, вам стоит рассмотреть альтернативную базу данных NoSQL, которая предлагает быстрое время отклика, хотя хранит данные на диске, такие как Couchbase (использует Redis internaly как кеш).

Или, если ваш вариант использования позволяет это, самым простым решением было бы добавить кэш Redis в вашу текущую архитектуру без изменения текущей базы данных, которую вы используете. Это будет драматически улучшать скорость доступа к данным в кеше (но не уменьшит первый доступ). Это зависит от того, будут ли данные запрашиваться более одного раза за короткий промежуток времени или нет.

+0

Спасибо, Паскаль, мне нравится ваш подход. Но как насчет сериализатора? Я знаю, что это не Redis-специфический, но то, что я делаю, это сериализация Java pojos с использованием Jackson for Smile: http://wiki.fasterxml.com/JacksonForSmile –

+0

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

+0

Да, конечно. Я просто думал, что лучший сериализатор уменьшит потребность в памяти. Но это будет другой поток. Спасибо за Ваш ответ. –

 Смежные вопросы

  • Нет связанных вопросов^_^