Skip to content
Search ffkv docs

Search the complete handbook, locally.

    JSON.MSET

    Sets or updates the JSON value of one or more keys

    Browse all commands · Upstream source documentation

    Reference fieldValue
    Canonical nameJSON.MSET
    Catalog groupJSON commands
    Upstream since2.6.0 — upstream Redis/module version, not an ffkv release
    Pinned catalogRedis 8.10.0
    JSON.MSET key path value [key path value ...]

    Documents cap at 4 MiB compact JSON, 262,144 nodes and depth 128. Paths cap at 16 KiB and matching at 65,536 results, with additional expression/projection work budgets. JSON trees stay RAM-resident in hybrid mode.

    Source: README.md:357–358, 375–377; tests/bdd/features/json.feature.

    All requests share the 8 MiB framing/1,024-argument ingress limit; normal RESP replies have 64 MiB wire/logical budgets with bounded nesting/value counts. Management and Lua origins impose smaller budgets. These are not a process RSS cap. Catalog inclusion is not exhaustive option or wire-format parity. See limits and compatibility.

    This command is in the canonical catalog but has no matching entry in the pinned src/command_metadata.json. Argument flags, complexity and key specifications are not invented. Use the syntax, upstream source documentation and actual scenario evidence below.

    These are source observations, not a test run performed by this documentation build. A tag identifies scenario intent; an extracted vector identifies a command invocation, which may intentionally produce an error. Scenarios may require setup, multiple connections, persistence, cluster nodes or native-module fixtures.

    • Multi-document assignment is atomic and multi-get preserves missing keys — tests/bdd/features/json.feature:312; command tag and invocation observed.

    The following JSON arrays are the test harness’s argument vectors, not shell commands. Numeric arguments are converted by the harness; objects of the form {"base64":"…"} represent decoded binary bytes, not a literal JSON command argument. Preserve scenario setup and connection ordering. See the CLI guide for shell quoting and binary stdin. No reply is invented or inferred.

    Multi-document assignment is atomic and multi-get preserves missing keys — tests/bdd/features/json.feature:314 (I execute:)

    [
    "JSON.MSET",
    "a",
    "$",
    "{\"v\":1}",
    "b",
    "$",
    "{\"v\":2}"
    ]

    Next source assertion: the reply equals:

    "OK"

    Multi-document assignment is atomic and multi-get preserves missing keys — tests/bdd/features/json.feature:330 (I execute:)

    [
    "JSON.MSET",
    "a",
    "$.v",
    "99",
    "missing",
    "$.child",
    "1"
    ]

    Next source assertion: the reply is an error with code “ERR”