Redis для хранения больших списков

#performance #data-structures #redis #in-memory-database

#Производительность #структуры данных #redis #в памяти-база данных

Вопрос:

Я совсем новичок в Redis, и я не уверен, подходит ли мой вариант использования для Redis.

Мне нужно сохранить список пользователей для каждого идентификатора компании.

 "companyA" : [
    {userName: xyz1, experience: 23,skills: [{name: python, score: 10}, ...], profilePicture:...},
    {userName: xyz2, experience: 23,skills:[{name: react, score: 10}, ...],  profilePicture:...},
    {userName: xyz3, experience: 23,skills:[{name: java, score: 10}, ...],  profilePicture:...},
    {userName: xyz4, experience: 23,skills:[{name: javascript, score: 10}, ...],  profilePicture:...},
  ]
  

Теперь у меня есть a scoringFunction(companyId, skills[]) , который требует a companyID и список навыков. Затем эта функция извлекает всех пользователей из Redis и вычисляет оценку на основе заданного списка навыков.

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

Мои два вопроса:

  • Должен ли я использовать Redis, и если да, то нужно ли сохранять пользователей в виде списка?
  • Может быть, есть лучшая альтернатива для этого варианта использования?

Заранее спасибо!

Ответ №1:

вы можете использовать тип данных списка для хранения списка идентификаторов пользователей в компании

например: company:<id> как ключ и user:1 , user:2 , …. как элемент списка.

и затем пользовательская мета переходит к другому ключу user:<id> , может быть хэшем или строкой