Redis cjson: есть ли способ манипулировать JSON без его полного декодирования?

Учитывая приведенный ниже пример, есть ли способ изменить значение с «bar» на «blah» без их декодирования?

redis 127.0.0.1:6379> eval 'return cjson.encode({["foo"]= "bar"})' 0
"{\"foo\":\"bar\"}"

redis 127.0.0.1:6379> eval 'return cjson.decode(ARGV[1])["foo"]' 0 "{\"foo\":\"bar\"}"
"bar"

Ссылка, например: https://redis.io/commands/eval


person rohitmohta    schedule 15.05.2018    source источник
comment
Модуль ReJSON может помочь   -  person for_stack    schedule 15.05.2018
comment
@for_stack Не может быть изменен, так как Redis поставляется с cjson. И я не могу загрузить другой модуль.   -  person rohitmohta    schedule 15.05.2018


Ответы (1)


Нет, вам придется пройти полный цикл декодирования и кодирования. Это как раз одна из "проблем", которую пытается решить http://rejson.io. См. http://rejson.io/performance/#comparison-vs-server-side-lua-scripting для получения дополнительной информации.

Отказ от ответственности: автор ReJSON здесь.

person Itamar Haber    schedule 15.05.2018