Сохранение свойств объекта в redis

допустим, у меня есть объект (пользователь), который состоит из нескольких свойств (ID, Name, Surename, Age). Какой способ лучше хранить этот объект в redis?

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

3 ответов


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


от официального Redis

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

маленькие хэши кодируются в очень маленьком пространстве

когда у вас не так много полей в нем.

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


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