Подтвердить что ты не робот

Как сохранить массив в хэшах Redis?

Я очень новичок в Redis и смотрю, можно ли его делать. Представьте, что я получаю такие данные:

{ "account": "abc", "name": "Bob", "lname": "Smith" }
{ "account": "abc", "name": "Sam", "lname": "Wilson" }
{ "account": "abc", "name": "Joe"}

И получение этих данных для другой учетной записи:

{ "account": "xyz", "name": "Bob", "lname": "Smith" } 
{ "account": "xyz", "name": "Sam", "lname": "Smith"}

Я хотел бы сохранить эти данные в Redis в таком же формате:

abc:name ["Bob", "Sam", "Joe"]
abc:lname ["Smith", "Wilson", Null]

И для xyz:

xyz:name["Bob", "Sam"]
xyz:lname["Smith", "Smith"]

Итак, вопрос в том, какие типы данных я должен использовать для хранения этого Redis?

4b9b3361

Ответ 1

Если ваша цель - проверить, что Bob используется как name для учетной записи abc, решение должно быть примерно таким:

Примеры данных

{ "account": "abc", "name": "Bob", "lname": "Smith" }
{ "account": "abc", "name": "Sam", "lname": "Wilson" }
{ "account": "abc", "name": "Joe"}

Сделайте это ( с помощью redis set):

SADD abc:name Bob Sam Joe
SADD abc:lname Wilson Smith

Затем вы сможете проверить, используется ли Bob как name для учетной записи abc, с помощью:

SISMEMBER abc:name Bob
> true

Для извлечения всех значений поля используйте SMEMBERS:

SMEMBERS abc:name
> ["Bob", "Sam", "Joe"]

Примечание:

  • Имя ключа находится в формате [account]:[field]. Где [account] может быть abc, xyz и т.д., А field может быть name, lname...
  • Если вы не хотите уникального значения, например:

    abc:name ["Bob", "Sam", "Joe", "Bob", "Joe"]

    тогда вы должны использовать список вместо view?id=AAIAAAD-U-%0AYBJN9lpixm6nxrnAaHQY5DoZ0FcNQ&trk=nav_responsive_tab_profile