> Какие типы и структуры данных поддерживает Redis (Python)
Уровень: senior · Роль: backend · Язык: Python · Категория: Технические вопросы
Компании: MTS
Стек: Redis, Python
> Пример ответа
Redis поддерживает несколько типов данных, каждый из которых оптимизирован для определенных сценариев:
-
Строки (Strings) - базовый тип для хранения текста, чисел или бинарных данных (до 512 МБ). Используется для кэширования, счетчиков (INCR/DECR), сессий.
-
Списки (Lists) - упорядоченные коллекции строк, реализованные как связные списки. Подходят для очередей (LPUSH/RPOP), логов, стека.
-
Множества (Sets) - неупорядоченные коллекции уникальных строк. Позволяют выполнять операции пересечения (SINTER), объединения (SUNION), разности (SDIFF). Применяются для тегов, фильтрации дубликатов.
-
Упорядоченные множества (Sorted Sets) - как множества, но с оценкой (score) для сортировки. Используются для рейтингов, очередей с приоритетом (ZADD/ZRANGE).
-
Хеши (Hashes) - структура "ключ-значение" для хранения объектов (например, профиль пользователя). Позволяет атомарно изменять отдельные поля (HSET/HGET).
-
Битовые массивы (Bitmaps) - работа с битами строки (SETBIT/GETBIT). Эффективны для подсчета уникальных событий (активные пользователи).
-
HyperLogLog - вероятностная структура для приблизительного подсчета уникальных элементов (PFADD/PFCOUNT) с фиксированной памятью (~12 КБ).
-
Geospatial (GEO) - хранение географических координат и поиск ближайших точек (GEOADD/GEORADIUS).
-
Streams - лог событий с поддержкой групп потребителей (XADD/XREADGROUP). Используется для очередей сообщений, аудита.
В Python с библиотекой redis-py работа выглядит так:
PYTHONimport redisr = redis.Redis()r.set('key', 'value') # Stringr.lpush('list', 'a') # Listr.sadd('set', 'member') # Setr.zadd('zset', {'item': 1.0}) # Sorted Setr.hset('hash', 'field', 'val') # Hash
Каждый тип данных имеет свои команды и оптимальные сценарии, что делает Redis гибким инструментом для кэширования, очередей, аналитики и реального времени.
> Похожие задачи по Python
Что такое duck typing и динамическая типизация в Python
Что такое синхронность, многопоточность и многопроцессорность
Что такое RabbitMQ dead letter exchange
В чем разница функции и процедуры
> Похожие задачи по backend
Что такое duck typing и динамическая типизация в Python
Что такое синхронность, многопоточность и многопроцессорность
Что такое RabbitMQ dead letter exchange
В чем разница функции и процедуры
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью