Практическое задание

Эта задача — шаг 16 курса «Redis в проде»

JSON-документ в Redis

легко~7 мин

Профиль пользователя лежит в файле /root/user.json. Сохрани его в Redis как JSON-документ (модуль JSON, не строка) под ключом user:1, а затем, не перезаписывая документ целиком, измени его по JSON-путям:

  1. увеличь stats.logins на 1 командой JSON.NUMINCRBY;
  2. добавь в конец массива roles строку "admin" командой JSON.ARRAPPEND.

Остальные поля (name, email, stats.last_ip) должны остаться как в файле.

Что потренируешь:
  • redis
  • RedisJSON
  • JSON.SET
  • JSON.GET
  • JSON.NUMINCRBY
  • JSON.ARRAPPEND
  • JSONPath

Разбор темы

Модуль JSON (в Redis 8 он встроен) хранит документ как дерево, а не как строку: тип ключа — ReJSON-RL. Это позволяет читать и менять отдельные поля по JSONPath ($.stats.logins) атомарно на сервере — без цикла «прочитать всю строку → распарсить в приложении → записать обратно», в котором параллельные клиенты теряют обновления. JSON.NUMINCRBY — счётчик внутри документа, JSON.ARRAPPEND/JSON.ARRPOP — работа с массивами, JSON.GET с путями возвращает только нужные куски, экономя трафик. Такие документы же индексирует Query Engine (FT.CREATE … ON JSON).

Что проверяется

  1. user:1 — JSON-документ
  2. поля name, email, stats.last_ip как в файле
  3. stats.logins увеличен на 1
  4. в roles добавлен admin
  5. поля изменены по путям, а не перезаписью

Как это выглядит