Redis хранит ключи, указывающие на значения.Ключи могут быть любыми двоичными значениями вплоть до разумного размера (рекомендуется использовать короткие строки ASCII для удобства чтения и отладки).Значения являются одним из пяти собственных типов данных Redis.
1.strings - последовательность двоичных безопасных байтов размером до 512 МБ
2.hashes - коллекция пар значений ключа
3.lists - коллекция строк в порядке вставки
4.sets - коллекция уникальных строк без упорядочения
5.sortedsets - коллекцияуникальные строки, упорядоченные по пользовательской шкале
Strings
Строка Redis - это последовательность байтов.
Строки в Redis безопасны в двоичном формате.(это означает, что они имеют известную длину, не определяемую никакими специальными завершающими символами), поэтому вы можете хранить в одной строке все, что угодно, до 512 мегабайт.
Строки - это каноническое понятие «хранилище значений ключей».У вас есть ключ, указывающий на значение, где ключ и значение являются текстовыми или двоичными строками.
Для всех возможных операций со строками см. http://redis.io/commands/#string
Хэши
Хеш Redis представляет собой набор пар ключ-значение.
Хеш Redis содержит множество пар ключ-значение, где каждый ключ и значение является строкой.Хэши Redis не поддерживают сложные значения напрямую (т. Е. Вы не можете иметь в поле хеша значение списка, набора или другого хэша), но вы можете использовать поля хеша, чтобы указывать на другие сложные значения верхнего уровня.Единственная специальная операция, которую вы можете выполнить со значениями поля хеша, - это атомарный приращение / убывание числового содержимого.
Хэши Redis можно рассматривать двумя способами: как непосредственное представление объекта и как способ хранения множества маленькихзначения компактно.
Прямые представления объектов просты для понимания.Объекты имеют имя (ключ хеша) и набор внутренних ключей со значениями.Смотрите пример ниже, ну, в общем, пример.
Хранение множества небольших значений с использованием хэша - это умный способ хранения больших объемов данных Redis.Когда хеш имеет небольшое количество полей (~ 100), Redis оптимизирует хранение и эффективность доступа ко всему хешу.Оптимизация хранилища небольших хэшей в Redis вызывает интересное поведение: более эффективно иметь 100 хэшей, каждый из которых содержит 100 внутренних ключей и значений, а не 10 000 ключей верхнего уровня, указывающих на строковые значения.Использование хэшей Redis для оптимизации вашего хранилища данных таким способом требует дополнительных затрат на программирование для отслеживания того, где заканчиваются данные, но если ваше хранилище данных основано на строковых значениях, вы можете сэкономить много накладных расходов памяти, используя этот странный прием.
Для всех возможных операций с хэшами см. документы по хешу
Списки
Списки Redis действуют как связанные списки.
Вы можете вставлять, удалять и просматривать списки либо из заголовка, либо из конца списка.
Используйте списки, когда вам нужно сохранить значения в том порядке, в котором они были вставлены.(Redis дает вам возможность вставлять в любую произвольную позицию списка, если вам нужно, но производительность вставки будет ухудшаться, если вы вставляете далеко от начальной позиции.)
Списки Redis часто используются в качестве производителя / потребителя.очереди.Вставьте элементы в список, а затем вытолкните элементы из списка.Что произойдет, если ваши потребители попытаются выскочить из списка без элементов?Вы можете попросить Redis дождаться появления элемента и сразу же вернуть его вам, когда он будет добавлен.Это превращает Redis в систему сообщений / событий / заданий / задач / уведомлений в режиме реального времени.
Вы можете атомарно удалять элементы с любого конца списка, что позволяет рассматривать любой список как стек или очередь.
Вы также можете поддерживать списки фиксированной длины (ограниченные коллекции), обрезая свой список до определенного размера после каждой вставки.
Для всех возможных операций со списками см. Документы списков .
Наборы
RediНаборы, ну, в общем, наборы.
Набор Redis содержит уникальные неупорядоченные строки Redis, где каждая строка существует только один раз для каждого набора.Если вы добавите один и тот же элемент десять раз в набор, он появится только один раз.Наборы отлично подходят для ленивой проверки того, что что-то существует, по крайней мере, один раз, не беспокоясь о том, что дубликаты элементов накапливаются и тратят пространство.Вы можете добавлять одну и ту же строку столько раз, сколько хотите, без необходимости проверять, существует ли она.
Наборы быстрые для проверки членства, вставки и удаления членов в наборе.
Наборы имеют эффективные операции над множествами, как и следовало ожидать.Вы можете взять объединение, пересечение и различие нескольких множеств одновременно.Результаты могут быть либо возвращены вызывающей стороне, либо результаты могут быть сохранены в новом наборе для последующего использования.
Наборы имеют постоянный доступ к времени для проверок членства (в отличие от списков), а Redis даже имеет удобное удаление и возврат случайных элементов.(«вытолкнуть случайный элемент из набора») или случайного члена, возвращающегося без замены («дайте мне 30 уникальных случайных пользователей») или с заменой («дайте мне 7 карточек, но после каждого выбора кладите карточку обратно, чтобы онапотенциально может быть взята снова ").
Для всех возможных операций над наборами см. наборы документов .
Сортированные наборы
Сортированные наборы Redis - это наборы с заданным пользователем порядком.
Для простоты можно представить отсортированный набор как двоичное дерево с уникальными элементами.(Сортированные наборы Redis на самом деле пропускают списки .) Порядок сортировки элементов определяется оценкой каждого элемента.
Сортированные наборы все еще являются наборами.Элементы могут появляться только один раз в наборе.Элемент в целях уникальности определяется его содержимым строки.Вставка элемента «яблоко» с оценкой сортировки 3, затем вставка элемента «яблоко» с оценкой 500 сортировки приводит к получению одного элемента «яблоко» с оценкой 500 сортировки в вашем отсортированном наборе.Наборы уникальны только на основе данных, а не на основе пар (оценка, данные).
Убедитесь, что ваша модель данных опирается на содержимое строки, а не на оценку уникальности элемента.Счета могут быть повторены (или даже ноль), но, в последний раз, элементы набора могут существовать только один раз для отсортированного набора.Например, если вы попытаетесь сохранить историю каждого входа пользователя в систему как отсортированный набор, сделав счет эпохой входа в систему и значение идентификатором пользователя, вы в конечном итоге сохраните только последнюю эпоху входа для всех своих пользователей.Ваш набор будет увеличиваться до размера вашей пользовательской базы, а не до желаемого размера пользовательской базы * логинов.
Элементы добавляются в ваш набор с оценками.Вы можете обновить счет любого элемента в любое время, просто добавьте элемент снова с новым счетом.Результаты представлены двойными числами с плавающей запятой, так что вы можете указать гранулярность временных меток высокой точности, если это необходимо.Несколько элементов могут иметь одинаковую оценку.
Вы можете получить элементы несколькими различными способами.Поскольку все отсортировано, вы можете запросить элементы, начиная с самых низких баллов.Вы можете запросить элементы, начиная с самых высоких баллов («в обратном порядке»).Вы можете запросить элементы по их оценке сортировки либо в натуральном, либо в обратном порядке.
Для всех возможных операций над отсортированными наборами см. Документы по отсортированным наборам.