Redis хранит ключи, указывающие на значения. Ключи могут быть любыми двоичными значениями вплоть до разумного размера (рекомендуется использовать короткие строки ASCII для удобства чтения и отладки). Значения являются одним из пяти собственных типов данных Redis.
1.strings - последовательность двоичных безопасных байтов до 512 МБ
2.hashes - коллекция пар ключ-значение
3.lists - коллекция строк в порядке вставки
4.sets - коллекция уникальных строк без упорядочивания
5. отсортированные наборы - набор уникальных строк, упорядоченных по пользовательской оценке
Струны
Строка 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 - это, ну, наборы.
Набор Redis содержит уникальные неупорядоченные строки Redis, где каждая строка существует только один раз для каждого набора. Если вы добавите один и тот же элемент десять раз в набор, он появится только один раз. Наборы отлично подходят для ленивого обеспечения того, что что-то существует хотя бы один раз, не беспокоясь о том, что дубликаты элементов накапливаются и тратят пространство. Вы можете добавлять одну и ту же строку столько раз, сколько хотите, не проверяя, существует ли она уже.
Наборы быстрые для проверки членства, вставки и удаления членов в наборе.
Наборы имеют эффективные операции над множествами, как и следовало ожидать. Вы можете взять объединение, пересечение и различие нескольких множеств одновременно. Результаты могут быть возвращены вызывающей стороне или результаты могут быть сохранены в новом наборе для последующего использования.
Наборы имеют постоянный доступ для проверки членства (в отличие от списков), а Redis даже имеет удобное удаление и возврат случайных элементов («извлечение случайного элемента из набора») или случайный возврат элементов без замены («дайте мне 30 уникальных случайных пользователей») ") или с заменой (" дайте мне 7 карточек, но после каждого выбора положите карточку обратно, чтобы она потенциально могла быть взята снова ").
Для всех возможных операций над наборами см. Документацию по наборам .
Сортированные Наборы
Сортированные наборы Redis - это наборы с заданным пользователем порядком.
Для простоты вы можете представить отсортированный набор как двоичное дерево с уникальными элементами. (Сортированные Redis наборы на самом деле пропустить списки .) Порядок сортировки элементов определяется счетом каждого элемента.
Сортированные наборы все еще наборы. Элементы могут появляться только один раз в наборе. Элемент в целях уникальности определяется его содержимым строки. Вставка элемента «яблоко» с оценкой сортировки 3, затем вставка элемента «яблоко» с оценкой 500 сортировки приводит к получению одного элемента «яблоко» с оценкой 500 сортировки в вашем отсортированном наборе. Наборы уникальны только на основе данных, а не на основе пар (оценка, данные).
Убедитесь, что ваша модель данных опирается на содержимое строки, а не на оценку элемента для уникальности. Счета могут быть повторены (или даже ноль), но, в последний раз, элементы набора могут существовать только один раз для отсортированного набора. Например, если вы попытаетесь сохранить историю каждого входа пользователя в систему как отсортированный набор, сделав счет эпохой входа в систему и значение идентификатором пользователя, вы в конечном итоге сохраните только последнюю эпоху входа для всех своих пользователей. Ваш набор будет увеличиваться до размера вашей пользовательской базы, а не до желаемого размера имен пользователей *.
Элементы добавляются в ваш набор с оценками. Вы можете обновить счет любого элемента в любое время, просто добавьте элемент снова с новым счетом. Результаты представлены двойными числами с плавающей точкой, так что вы можете указать гранулярность высокоточных временных меток, если это необходимо. Несколько элементов могут иметь одинаковую оценку.
Вы можете получить элементы несколькими различными способами. Поскольку все отсортировано, вы можете запросить элементы, начиная с самых низких баллов. Вы можете запросить элементы, начиная с самых высоких баллов («в обратном порядке»). Вы можете запросить элементы по их сортировке в натуральном или обратном порядке.
Для всех возможных операций над отсортированными наборами см. Документацию по отсортированным наборам.