Выбор ответа Middle Кеш и очереди обновлено

Атомарный счётчик в Redis

Вопрос

Четыре экземпляра сервиса считают просмотры в Redis. Какой способ не теряет инкременты?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: INCR views:42. INCR выполняется на стороне Redis одной командой, а команды Redis обрабатываются последовательно, поэтому инкремент атомарен. - GET и SET из приложения дают гонку: два экземпляра прочитают 10 и оба запишут 11. - Переменная в процессе своя…

Варианты ответа

  1. GET, прибавить 1 в Node, SET
  2. INCR views:42правильный ответ
  3. Хранить счётчик в переменной и раз в минуту делать SET
  4. GET и SET в одном Promise.all

Разбор

INCR выполняется на стороне Redis одной командой, а команды Redis обрабатываются последовательно, поэтому инкремент атомарен.

  • GET и SET из приложения дают гонку: два экземпляра прочитают 10 и оба запишут 11.
  • Переменная в процессе своя у каждого экземпляра, и они перезапишут друг друга.
  • Promise.all запускает команды параллельно, атомарности это не даёт.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.