[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-keshirovanie-kakie-struktury-dannykh-podderzhivaet-redis":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":21,"progress":22,"seo":23},181,"kakie-struktury-dannykh-podderzhivaet-redis",5,"keshirovanie","Кеширование","⚡","Какие структуры данных поддерживает Redis?","Redis поддерживает набор высокоуровневых структур данных, каждая из которых оптимизирована под определённый класс задач, что отличает его от простых key-value хранилищ типа Memcached.\n\n### Основные структуры данных\n\n| Структура | Команды | Применение |\n|-----------|---------|------------|\n| **String** | `SET`, `GET`, `INCR`, `DECR`, `MGET` | Кэш, счётчики, сессии |\n| **Hash** | `HSET`, `HGET`, `HGETALL`, `HDEL` | Объекты (user:1 -> {name, email, age}) |\n| **List** | `LPUSH`, `RPUSH`, `LPOP`, `LRANGE` | Очереди, последние N элементов |\n| **Set** | `SADD`, `SMEMBERS`, `SINTER`, `SUNION` | Теги, уникальные значения, пересечения |\n| **Sorted Set** | `ZADD`, `ZRANGE`, `ZRANK`, `ZRANGEBYSCORE` | Рейтинги, таймлайны, приоритетные очереди |\n| **Stream** | `XADD`, `XREAD`, `XREADGROUP` | Event streaming, лог событий, очереди задач |\n| **HyperLogLog** | `PFADD`, `PFCOUNT`, `PFMERGE` | Подсчёт уникальных значений (approximate) |\n| **Bitmap** | `SETBIT`, `GETBIT`, `BITCOUNT` | Флаги, онлайн-статус, daily active users |\n\n### Практические примеры\n\n\u003Cdetails>\u003Csummary>Пример кода\u003C\u002Fsummary>\n\n```bash\n# String — кэш с TTL\nSET user:1 '{\"name\":\"John\",\"email\":\"john@mail.com\"}' EX 600\n\n# Hash — отдельные поля\nHSET user:1 name \"John\" email \"john@mail.com\" age 30\nHGET user:1 name  # → \"John\"\n\n# Sorted Set — leaderboard\nZADD leaderboard 100 \"player1\" 200 \"player2\" 150 \"player3\"\nZREVRANGE leaderboard 0 2 WITHSCORES  # топ-3\n\n# List — последние 10 уведомлений\nLPUSH notifications:user:1 '{\"text\":\"Новый заказ\",\"time\":\"...\"}'\nLTRIM notifications:user:1 0 9  # оставить только последние 10\n\n# HyperLogLog — уникальные посетители (приблизительно, погрешность \u003C1%)\nPFADD visitors:2026-04-22 \"user1\" \"user2\" \"user3\"\nPFCOUNT visitors:2026-04-22  # → 3\n\n# Stream — event log\nXADD orders * orderId 123 status created\nXREAD COUNT 10 STREAMS orders 0  # читать с начала\n```\n\n\u003C\u002Fdetails>\n\n### Как выбрать структуру\n\n- **Кэш объектов целиком** — String (сериализованный JSON)\n- **Кэш с доступом к отдельным полям** — Hash (можно читать\u002Fобновлять одно поле без десериализации)\n- **Рейтинги, лидерборды** — Sorted Set (O(log N) для add\u002Fremove\u002Frank)\n- **Очереди с гарантией доставки** — Stream (consumer groups, acknowledgment)\n- **Простые очереди** — List (LPUSH\u002FRPOP)\n- **Уникальные элементы и пересечения** — Set\n- **Подсчёт уникальных (approximate)** — HyperLogLog (12 KB на любое количество элементов)\n\n### Частые ошибки\n\n- **String для объектов вместо Hash** — каждое обновление одного поля требует перезаписи всего JSON\n- **List вместо Stream для очередей** — Stream поддерживает consumer groups и acknowledgment, List — нет\n- **Set для больших коллекций** — `SMEMBERS` возвращает все элементы разом; для больших коллекций используйте `SSCAN`\n\n### Как используется в 2026\n\n- Redis Streams заменяют простые очереди на List\n- RedisJSON — нативная работа с JSON без String serialization\n- RediSearch — полнотекстовый поиск без Elasticsearch для простых случаев\n\n> **На собеседовании:** интервьюер проверяет, знаете ли вы, какую структуру данных выбрать под задачу. Частая ошибка — использовать только String для всего, не зная про Hash для объектов и Sorted Set для рейтингов.","","middle",[15,16,17,18,19,20],"sorted-set","stream","data-structures","caching","hash","redis",[],null,{"title":24,"description":25,"ogTitle":26,"ogDescription":27,"keywords":28,"schemaAnswer":39,"featuredSnippetReady":40},"Какие структуры данных поддерживает Redis — Gymterview","Структуры данных Redis: String, Hash, List, Set, Sorted Set, Stream, HyperLogLog, Bitmap. Практические примеры команд и применение каждой структуры.","Структуры данных Redis: String, Hash, List, Set, Sorted Set и другие — Gymterview","Полный обзор структур данных Redis с командами и примерами: кэш, рейтинги, очереди, уникальные посетители.",[29,30,31,32,33,34,35,36,37,38],"Redis структуры данных","String","Hash","List","Set","Sorted Set","Stream","HyperLogLog","Bitmap","Redis команды","Redis поддерживает 8 основных структур: String (кэш, счётчики), Hash (объекты с полями), List (очереди, последние N элементов), Set (уникальные значения, пересечения), Sorted Set (рейтинги, O(log N)), Stream (event streaming, consumer groups), HyperLogLog (приблизительный подсчёт уникальных, погрешность \u003C1%), Bitmap (флаги, онлайн-статус).",true]