#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>
, может быть хэшем или строкой