Лекция 4 мин.
Привет, Вы узнаете о том , что такое типы данных redis, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое типы данных redis , настоятельно рекомендую прочитать все из категории Базы данных - Redis DB Nosql.
Строки (strings). Базовый тип данных Redis. Строки в Redis
бинарно-безопасные, могут использоваться так же как
числа, ограниченные размером 512 M6.
Списки (lists). Классические списки строк, упорядоченные в порядке
вставки, которая возможна как со стороны головы, так и со стороны хвоста
список. Максимальное количество элементов – 232 – 1.
Множества (sets). Множества строк в математическом понимании: нет
упорядоченные, поддерживающие операции вставки, проверки
вхождение элемента, сечения и разности множеств. Максимальная
количество элементов – 232 – 1.
Хэш-таблицы (hashes). Классические хэш-таблицы или ассоциативные
массивы. Максимальное количество пар «ключ-значение» – 232 – 1.
Упорядоченные множества (sorted sets). Упорядоченное множество
отличается от обычного тем, что его элементы
упорядочены по особому параметру «sсоге».
Redis поддерживает огромное количество структур данных. Основные — это, конечно же, string, list, hash, table и set. Для работы с каждой из них есть набор операций: со строками мы работаем с помощью get, mget, set, append, со списками используем lpush, lpop, ltrim, llen. Операций и структур данных так много, что описать их все в этой статье просто невозможно. Поэтому я предлагаю рассмотреть только специфичные типы данных: Sorted Set, Bitmap, HyperLogLog, Stream.
Sorted Set. На базе этой структуры можно построить уже знакомый нам алгоритм «скользящего окна» (Rate Limiter):
Для скоринга можно использовать timestamp входящего запроса.
Удалить устаревшие элементы, которые вышли за пределы окна, можно командой ZREMRANGEBYSCORE.
Количество запросов в окне вычисляется с помощью команды ZCARD.
Если количество запросов не превышает лимит, то новый запрос в окно можно добавить командой ZADD.
Bitmap. Эта структура данных идеально подходит для высоконагруженных сервисов — она позволяет провести максимально быструю и при этом компактную с точки зрения утилизации памяти аналитику. Об этом говорит сайт https://intellect.icu . Например, составить отчет по уникальным пользователям в разрезе суток.
По сути, это битовая маска с возможностью записи и чтения по любому смещению. На фиксацию факта посещения нашего ресурса одним уникальным пользователем нам нужен всего один бит информации. Один битмап может сохранить 2^32 бита информации.
Берем идентификатор пользователя: если он имеет тип integer, то ничего дополнительно делать не нужно, просто используем его как offset в битовой маске. Если он относится к другому типу, то используем функцию hash и берем остаток от деления для получения смещения в маске. А затем выполняем команду SETBIT для установки нужного бита в маске.
Stream. Посмотрите на картинку. Что она вам напоминает?

Ну конечно: это просто калька компонентов, знакомая по ландшафту брокера Kafka. Сразу видно, чем вдохновлялись создатели Redis.
Здесь тоже идет работа с потоками, и терминология нам прекрасно знакома: producer, consumer, consumer group. Все команды для работы с потоками в Redis имеют префикс X: например, XADD. Для чтения данных в рамках consumer group используется команда XREADGROUP, доставка подтверждается командой XACK и так далее.
HyperLogLog — это вероятностная структура данных, которая позволяет определить мощность некоторого множества, т. е. количество уникальных элементов в нем. При этом она использует всего 12 Кбайт оперативной памяти и определяет кардинальность множеств вплоть до 2^64 элементов, а стандартная ошибка такой оценки — 0,81%. То есть даже меньше процента! Для работы с данной структурой нужны команды PFADD и PFCOUNT.

Исследование, описанное в статье про типы данных redis, подчеркивает ее значимость в современном мире. Надеюсь, что теперь ты понял что такое типы данных redis и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Базы данных - Redis DB Nosql
Из статьи мы узнали кратко, но содержательно про типы данных redis
Комментарии