Перейти к содержимому

Типы данных и структуры

Строка — это последовательность байтов. Строка может содержать текст, число, JSON, сериализованный объект или бинарные данные. Максимальный размер значения — 512 МБ. Например, строки используются для хранения кеша страниц.

Хеш — это набор пар «поле-значение». Он позволяет хранить объект в одном ключе и обращаться к его полям отдельно. Например, в хеше можно хранить профиль пользователя: имя и город.

Список — это упорядоченная последовательность элементов. Элементы можно добавлять в начало или конец списка, извлекать элемент из списка и получать элемент по индексу. Список можно использовать как очередь фоновых задач.

Множество — это неупорядоченный набор уникальных элементов. Повторное добавление элемента не создает дубликат. Например, множество можно использовать для хранения тегов статьи.

Сортированное множество — это набор уникальных элементов, каждому из которых назначен числовой вес. Например, в сортированном множестве можно хранить рейтинг пользователей. При чтении элементы можно получить в порядке возрастания или убывания веса.

Поток — это упорядоченный журнал записей. Каждая запись содержит уникальный идентификатор и одну или несколько пар «поле-значение». Поток хранится как отдельный тип значения stream.

Записи можно читать по диапазону идентификаторов. Для распределения обработки между несколькими приложениями используются группы потребителей. В группе доставленные, но еще не подтвержденные записи учитываются в списке ожидающих подтверждения — PEL (Pending Entries List). Подтверждение обработки и удаление записи из потока — разные операции.

Для удаления потока целиком используйте инструкцию по удалению ключа. Вместе с ключом будут удалены все его записи и группы потребителей.

Поток можно использовать для хранения событий приложения, например создания и оплаты заказа.

Битовая карта — это последовательность битов, каждый из которых имеет значение 0 или 1. Битовую карту можно использовать для учета активности пользователей за день.

Битовая карта хранится в строке. Но значение string в ответе на проверку типа не отличает битовую карту от обычной строки. Специальные команды позволяют читать и изменять отдельные биты, а также подсчитывать количество установленных битов. Не изменяйте биты в произвольной строке.

Для удаления всей битовой карты используйте инструкцию по удалению ключа. Для сброса отдельного бита установите его значение в 0.

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

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

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

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

В Valkey геопространственный индекс хранится в сортированном множестве. Но ответ zset на проверку типа не гарантирует корректность геопространственных данных. Не изменяйте координаты командой изменения веса. Для управления координатами используйте команды Geo.

Для подсчета или удаления объектов используйте инструкции для сортированных множеств.