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

Редис установлен против хэша

Во многих учебниках Redis (таких как этот) данные хранятся в наборе, но с несколькими значениями, объединенными в строку (то есть учетная запись пользователя может сохраняются в наборе как две записи: "пользователь: 1000: имя пользователя" и "пользователь: 1000: пароль" ).

Однако у Redis также есть хеши. Похоже, что имеет смысл иметь хэш "user: 1000", который содержит запись "имя пользователя" и запись "пароль". Вместо того, чтобы конкатенировать строки для доступа к определенному значению, вы просто обращаетесь к ним непосредственно в хеше.

Так почему же он не используется так много? Это только старые учебники? Или у хэшей Redis есть проблемы с производительностью?

4b9b3361

Ответ 1

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

Возможно, вы правы - учебные пособия могут быть просто из-за того, что были введены хаши. Они были четко разработаны для хранения представлений объектов: http://oldblog.antirez.com/post/redis-weekly-update-1.html

Я полагаю, что одной из проблем было бы количество команд, которые Redis должен обслуживать, когда вставлен новый элемент (n количество команд, где n - количество полей в Hash) по сравнению с простой командой String SET. Я не нашел, что это проблема еще на службе, которая поражает Redis около 1 миллиона раз в день. Использование правильной структуры данных для меня важнее, чем незначительное влияние на производительность.

(Также см. мой комментарий относительно Redis Sets vs. Redis Strings - я думаю, ваш вопрос относится к строкам, но исправьте меня, если я ошибаюсь!)

Ответ 2

Хэши - один из самых эффективных методов хранения данных в Redis, даже если они позволяют рекомендовать их для использования, когда это возможно.

http://redis.io/topics/memory-optimization

Использовать хэши, если возможно

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