2016-04-27 3 views
0

На сайте redis в разделе «Оптимизация памяти» говорится, что небольшие хэши используют меньше памяти, чем несколько клавиш, поэтому лучше хранить небольшой хэш с несколькими полями вместо нескольких клавиш, поэтому я думал о создании, например , хэш пользователей и сохранение пользователей в полях как сериализованные данные json, но как насчет моего хэша ДЕЙСТВИТЕЛЬНО большой смысл, у меня много полей.Redis - как хранить данные?

Лучше ли хранить пользователей как один хэш с большим количеством полей или как несколько небольших хэшей?

Я спрашиваю об этом, потому что на сайте redis говорится, что «маленькие» хэши лучше, чем несколько ключей для хранения нескольких значений, но я не знаю, все еще ли он подходит для действительно больших хэшей.

ответ

0

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

Мы попытались сохранить каждого пользователя как 1 хэш на пользователя, а затем поля для каждого из свойств пользователей, но мы обнаружили, что мы никогда не использовали поля отдельно и в большинстве случаев нуждались в большей части данных (HGETALL), поэтому переключились на сохранение json - что также помогает в сохранении типов данных.

Нужно более подробно узнать, что и как вы пытаетесь сохранить данные, чтобы дать больше предложений.

+0

Вы имеете в виду одно поле hash с json как значение для хэша пользователей? –

+0

Я имел в виду использование стандартного ключа через GET/SET – Salakar

+1

Я согласен с этим. Другим ограничением хэшей является то, что вы не можете поддерживать вложенные отношения, не преобразовывая вложенный объект в jsons (или другую сериализованную строку), чтобы помещать в хэш-поля. Это становится беспорядочным и бессмысленным, а может просто сериализовать всю партию в json и использовать строковый тип данных. –

0

Скажем, у вас есть пользователь, как это:

{"ID": "344", "Name": "Blah", "Occupation": "Engineer", "Telephone": [ "550-33...", ...] } 

Вы бы сериализации JSON и сохранить его как то, что Redis говорит строка. То есть вы должны использовать команды «GET» и «SET».

например.

SET "user:344" "<SERIALIZED> 

Поскольку «пользователи» являются одним из ваших основных объектов, это не маленький хеш.

Суть документации в том, что у хэшей будет небольшое количество элементов. Например, предположим, что в вашей системе у вас есть 10 цветов, и вы хотите связать некоторые данные с каждым из них. Вместо этого:

color:blue -> DATA, color:white -> DATA 

Лучше вам хэш.

colors -> blue -> DATA 
colors -> while -> DATA 
Смежные вопросы