Хранение свойств объекта в redis - PullRequest
24 голосов
/ 10 марта 2011

Допустим, у меня есть объект (Пользователь), который состоит из нескольких свойств (ID, Имя, Фамилия, Возраст). Каким способом лучше хранить этот объект в Redis?

  • сохранить каждое значение свойства в выделенном ключе, например, user: {id}: id, user: {id}: имя, user: {id}: верное имя, user: {id}: age
  • сохранить весь объект User в виде строки JSON в одном ключе, например user: {id}: json (значение ключа будет примерно таким: {"ID": 123, "Name": "Johny", " Surename ":" Bravo "," Age ": 22})

Ответы [ 3 ]

20 голосов
/ 10 марта 2011

Согласно этим двум источникам, вероятно, оптимальным решением будет использование хешей из-за потребления памяти при использовании выделенных ключей и длинной строки в сценарии с JSON в качестве значения ключа.

1 голос
/ 11 февраля 2014

Из официального Redis

Используйте хэши, когда это возможно

Маленькие хэши закодированы в очень маленьком пространстве

Если в нем не так много полей.

Каждый раз, когда хеш будет превышать указанное количество элементов или размер элемента, он будет преобразован в реальную хеш-таблицу, иэкономия памяти будет потеряна.

0 голосов
/ 11 декабря 2015

Из моих тестов использование хеша занимает гораздо меньше места, но это единственная причина. Если у вас много данных, рассмотрите возможность использования хэша. В противном случае вы могли бы также использовать JSON, поскольку его легко сериализовать и десериализовать в объекты, если вы того пожелаете, и обрабатывать в целом.

...