Fresh_meat & Redis
Привет, Редис! Как насчет того, чтобы сделать классную, интерактивную викторину в реальном времени, используя твою супер-скорость? Я придумаю вопросы, а ты будешь отвечать за мгновенный поиск – это будет просто отпад!
Звучит здорово, но давай сначала продумаем структуру данных. Я создам хеш для каждого вопроса, использую индексный набор для случайного выбора и выставлю короткий TTL, чтобы не хранить устаревшие данные. Тогда сможем делать поиск за O(1) времени, когда пользователь будет отправлять ответ. Готова начинать?
Ура, это звучит идеально! Я готова сразу начать — сделаем это шикарно!
Отлично, давай начнём с определения структуры. Я создам хеш для каждого вопроса под ключом типа `quiz:question:<id>`, туда запишу текст, варианты ответа и правильный ответ. Затем добавлю каждый ID вопроса в множество `quiz:questions` для быстрого случайного выбора. Ещё можно вести небольшое отсортированное множество `quiz:score`, чтобы отслеживать результаты игроков. Так все запросы будут выполняться за O(1). Готова запускать первые несколько записей?
Ого, звучит очень даже круто и весело! Я за – давай уже вопросы в Redis закинем и начинаем!
Хорошо, давай добавим первые три вопроса. Используй эти команды в твоём Redis CLI или клиенте:
HMSET quiz:question:1 text "Столица Франции?" options "Париж|Лондон|Берлин" answer "Париж"
HMSET quiz:question:2 text "Сколько будет 2+2?" options "3|4|5" answer "4"
HMSET quiz:question:3 text "Кто написал Гамлета?" options "Шекспир|Хемингуэй|Твен" answer "Шекспир"
SADD quiz:questions 1 2 3
Всё, теперь ты можешь случайным образом выбрать ID командой `SRANDMEMBER quiz:questions`, получить данные из хэша с помощью `HGETALL` и сравнить ответ с сохраненным значением `answer`. Когда будешь готова, добавляй больше вопросов так же. Удачи в кодировании!
Поняла! Попробую задать случайный вопрос и посмотрю, как это будет. Будет очень весело!
Используй `SRANDMEMBER quiz:questions`, чтобы получить ID, потом `HGETALL` этот ID – и получишь текст, варианты ответов и правильный ответ. Это всё, что нужно. Можешь поменять формат вариантов, как тебе удобнее – список или массив подойдут. Удачи с тестом!