4.0 added a C module API, and the ecosystem that follows — search, JSON, time series, filters — is genuinely capable. It also means running a Redis that is not stock Redis, on every host and in every environment.
# redis.conf
loadmodule /usr/lib/redis/modules/rejson.so
# and now every developer machine, CI runner and staging box needs it too
The question worth asking is whether the alternative is actually worse. A JSON document in a string with the application doing the parsing is unglamorous and portable; a module makes it elegant and makes the deployment a build. For a team already operating Redis carefully the trade can be right — for one where Redis is “the cache”, it is a new class of problem.