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

Мне нужно хранить данные о классах и учениках в Redis.

У меня есть хэши для информации о классе, например: classroom:0, где 0 — это идентификатор классной комнаты, и у него есть пары значений поля, например:

classroomName -> xx, teacherId -> yy

Чтобы хранить учеников для этих классов, у меня есть отдельный набор, например:

studentsForClassroom:0, и этот набор содержит массив идентификаторов учащихся этого класса.

Следуя этой схеме, чтобы получить всю информацию о классе, я должен сначала выполнить команду hgetall для class:0, а затем команду smembers для studentForClassroom:0.

Это правильный путь? Любое лучшее решение? Возможно ли, что SET для студентов может быть каким-то образом вложен в хэш класса, чтобы, когда я делаю hgetall, весь массив студентов заполнялся прямо в данных класса?


person mkto    schedule 27.09.2014    source источник


Ответы (2)


Ты делаешь это правильно. Redis не имеет вложенных структур данных.

Поскольку хэши вашего класса и наборы учащихся не слишком велики, использование HGETALL и SMEMBERS допустимо, но помните, что для больших объемов вы, вероятно, захотите использовать вместо этого HSCAN и SSCAN.

person Itamar Haber    schedule 27.09.2014

Вам не следует беспокоиться об этом. Redis молниеносно работает, и это обычный способ его использования: выполнение множества простых запросов. Более того, node-redis автоматически передает команды. Если у вас действительно есть проблемы с производительностью, убедитесь, что вы установили Hiredis. Node_redis будет использовать его.

person Pascal Le Merrer    schedule 27.09.2014