From dc943e36d2e9911b68ae0d5ef95b14eb0bd74479 Mon Sep 17 00:00:00 2001 From: Andy Stark Date: Thu, 5 Nov 2026 13:02:30 +0000 Subject: [PATCH 1/2] DOC-7266 Say why a client has no signature on the API Methods tab An empty signature list now shows a reason when data/command-api-mapping-status.json records one: "has no dedicated method, send it with " for generic-only commands, and "isn't available through " for unsupported ones. A client with no entry keeps the old message, so this lands without the backfill. Only a few real examples are in the status file here; the full backfill edits the same data files as the DOC-7263 sweep and follows once that merges. The status lives in its own file, not in the per-command files, so the api_calls shape and every other consumer of the mapping stay untouched and this cannot conflict with the data PRs. The generic call name (execute_command, Do, sendCommand and so on) is per client in config.toml's clientsConfig. The commands foldout needs no change: it shows nothing for an empty list. ioredis is skipped because the tab never renders it. Learned: a missing client key and an empty list render identically, so reasons need their own store Directive: keep the status out of api_calls, other scripts read that shape Recheck: when ioredis, RedisVL or Ruby are added to the tab's client list, give them a genericCall Ticket: DOC-7266 Co-Authored-By: Claude Sonnet 5.5 --- build/command-api-mapping-README.md | 17 +++++++++++ config.toml | 28 +++++++++---------- data/command-api-mapping-status.json | 18 ++++++++++++ .../partials/components/api-methods-tab.html | 13 ++++++++- 4 files changed, 61 insertions(+), 15 deletions(-) create mode 100644 data/command-api-mapping-status.json diff --git a/build/command-api-mapping-README.md b/build/command-api-mapping-README.md index 5b528e8056..828beea8d6 100644 --- a/build/command-api-mapping-README.md +++ b/build/command-api-mapping-README.md @@ -26,6 +26,23 @@ Each file is named after a Redis command (e.g., `GET.json`, `SET.json`, `BF.ADD. } ``` +## Why a client has no signature + +An empty list, or a missing client key, shows "No method signature available for this +client." To say why, list the command and client in `data/command-api-mapping-status.json`: + +```json +{ "CLUSTER NODES": { "redis_rs_sync": "generic_only" }, "QUIT": { "go-redis": "unsupported" } } +``` + +- `generic_only`: the client has no typed method. The tab says to send the command with the + client's `genericCall` (set per client in `config.toml`). +- `unsupported`: the client can't call the command, or the command is handled by the client + itself. + +A client with no entry keeps the default message. Only the API Methods tab uses this file. The +commands foldout shows signatures only when there are any. + ## Adding a New Command 1. Create a new file named `data/command-api-mapping/COMMAND_NAME.json` (e.g., `MGET.json`) diff --git a/config.toml b/config.toml index 4d4a8ebe90..5285194a2d 100644 --- a/config.toml +++ b/config.toml @@ -102,24 +102,24 @@ rdi_current_version = "2.2.0" [params.clientsConfig] # mappingClientId maps to keys in data/command-api-mapping.json for method signatures -"Python"={quickstartSlug="redis-py", langId="python", clientId="redis-py", clientName="redis-py", mappingClientId="redis_py"} -"Node.js"={quickstartSlug="nodejs", langId="javascript", clientId="node-redis", clientName="node-redis", mappingClientId="node_redis"} +"Python"={quickstartSlug="redis-py", langId="python", clientId="redis-py", clientName="redis-py", mappingClientId="redis_py", genericCall="execute_command"} +"Node.js"={quickstartSlug="nodejs", langId="javascript", clientId="node-redis", clientName="node-redis", mappingClientId="node_redis", genericCall="sendCommand"} "ioredis"={quickstartSlug="ioredis", langId="javascript", clientId="ioredis", clientName="ioredis", mappingClientId="ioredis"} -"Java-Sync"={quickstartSlug="jedis", langId="java", clientId="jedis", clientName="Jedis", mappingClientId="jedis"} -"Lettuce-Sync"={quickstartSlug="lettuce", langId="java", clientId="lettuce", clientName="Lettuce", mappingClientId="lettuce_sync"} -"Java-Async"={quickstartSlug="lettuce", langId="java", clientId="lettuce", clientName="Lettuce", mappingClientId="lettuce_async"} -"Java-Reactive"={quickstartSlug="lettuce", langId="java", clientId="lettuce", clientName="Lettuce", mappingClientId="lettuce_reactive"} -"Go"={quickstartSlug="go", langId="go", clientId="go-redis", clientName="go-redis", mappingClientId="go-redis"} +"Java-Sync"={quickstartSlug="jedis", langId="java", clientId="jedis", clientName="Jedis", mappingClientId="jedis", genericCall="sendCommand"} +"Lettuce-Sync"={quickstartSlug="lettuce", langId="java", clientId="lettuce", clientName="Lettuce", mappingClientId="lettuce_sync", genericCall="dispatch"} +"Java-Async"={quickstartSlug="lettuce", langId="java", clientId="lettuce", clientName="Lettuce", mappingClientId="lettuce_async", genericCall="dispatch"} +"Java-Reactive"={quickstartSlug="lettuce", langId="java", clientId="lettuce", clientName="Lettuce", mappingClientId="lettuce_reactive", genericCall="dispatch"} +"Go"={quickstartSlug="go", langId="go", clientId="go-redis", clientName="go-redis", mappingClientId="go-redis", genericCall="Do"} "C"={quickstartSlug="hiredis", langId="c", clientId="hiredis", clientName="hiredis", mappingClientId=""} -"C#-Sync (NRedisStack)"={quickstartSlug="dotnet", langId="csharp", clientId="nredisstack", clientName="NRedisStack", mappingClientId="nredisstack_sync"} -"C#-Async (NRedisStack)"={quickstartSlug="dotnet", langId="csharp", clientId="nredisstack", clientName="NRedisStack", mappingClientId="nredisstack_async"} -"C#-Sync (SE.Redis)"={quickstartSlug="dotnet", langId="csharp", clientId="stackexchange-redis", clientName="StackExchange.Redis", mappingClientId="nredisstack_sync"} -"C#-Async (SE.Redis)"={quickstartSlug="dotnet", langId="csharp", clientId="stackexchange-redis", clientName="StackExchange.Redis", mappingClientId="nredisstack_async"} +"C#-Sync (NRedisStack)"={quickstartSlug="dotnet", langId="csharp", clientId="nredisstack", clientName="NRedisStack", mappingClientId="nredisstack_sync", genericCall="Execute"} +"C#-Async (NRedisStack)"={quickstartSlug="dotnet", langId="csharp", clientId="nredisstack", clientName="NRedisStack", mappingClientId="nredisstack_async", genericCall="ExecuteAsync"} +"C#-Sync (SE.Redis)"={quickstartSlug="dotnet", langId="csharp", clientId="stackexchange-redis", clientName="StackExchange.Redis", mappingClientId="nredisstack_sync", genericCall="Execute"} +"C#-Async (SE.Redis)"={quickstartSlug="dotnet", langId="csharp", clientId="stackexchange-redis", clientName="StackExchange.Redis", mappingClientId="nredisstack_async", genericCall="ExecuteAsync"} "RedisVL"={quickstartSlug="redis-vl", langId="python", clientId="redis-vl", clientName="RedisVL", mappingClientId="redis_vl"} -"PHP"={quickstartSlug="php", langId="php", clientId="predis", clientName="Predis", mappingClientId="php"} +"PHP"={quickstartSlug="php", langId="php", clientId="predis", clientName="Predis", mappingClientId="php", genericCall="executeRaw"} "Ruby"={quickstartSlug="redis-rb", langId="ruby", clientId="redis-rb", clientName="redis-rb", mappingClientId="redis_rb"} -"Rust-Sync"={quickstartSlug="rust", langId="rust", clientId="redis-rs", clientName="redis-rs", mappingClientId="redis_rs_sync"} -"Rust-Async"={quickstartSlug="rust", langId="rust", clientId="redis-rs", clientName="redis-rs", mappingClientId="redis_rs_async"} +"Rust-Sync"={quickstartSlug="rust", langId="rust", clientId="redis-rs", clientName="redis-rs", mappingClientId="redis_rs_sync", genericCall="redis::cmd"} +"Rust-Async"={quickstartSlug="rust", langId="rust", clientId="redis-rs", clientName="redis-rs", mappingClientId="redis_rs_async", genericCall="redis::cmd"} "Python (Iris)"={quickstartSlug="", langId="python", clientId="iris-python", clientName="Python (Iris)", mappingClientId=""} "TypeScript (Iris)"={quickstartSlug="", langId="typescript", clientId="iris-typescript", clientName="TypeScript (Iris)", mappingClientId=""} "cURL (Iris)"={quickstartSlug="", langId="bash", clientId="iris-curl", clientName="cURL (Iris)", mappingClientId=""} diff --git a/data/command-api-mapping-status.json b/data/command-api-mapping-status.json new file mode 100644 index 0000000000..bb6f04369c --- /dev/null +++ b/data/command-api-mapping-status.json @@ -0,0 +1,18 @@ +{ + "CLUSTER NODES": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "ACL HELP": { + "go-redis": "generic_only" + }, + "CLUSTER KEYSLOT": { + "nredisstack_sync": "unsupported" + }, + "QUIT": { + "go-redis": "unsupported" + }, + "MONITOR": { + "nredisstack_sync": "unsupported" + } +} diff --git a/layouts/partials/components/api-methods-tab.html b/layouts/partials/components/api-methods-tab.html index 6b31b498b9..7fc9222fea 100644 --- a/layouts/partials/components/api-methods-tab.html +++ b/layouts/partials/components/api-methods-tab.html @@ -15,6 +15,10 @@ {{ $apiOverrides := index site.Data "command-api-mapping-overrides" }} {{ $cmdMapping := index $apiMapping $commandName }} {{ $cmdOverrides := index $apiOverrides $commandName }} +{{/* Why a client has no signature: {command: {mappingClientId: "generic_only" | "unsupported"}} */}} +{{ $statusData := index site.Data "command-api-mapping-status" }} +{{ $cmdStatus := dict }} +{{ with $statusData }}{{ with index . $commandName }}{{ $cmdStatus = . }}{{ end }}{{ end }} {{/* Define client order explicitly */}} {{/* $clientOrder controls the dropdown UI and signature rendering - one entry per mappingClientId */}} @@ -77,7 +81,14 @@ {{ end }}{{ end }}){{ if $returns }} → {{ if reflect.IsMap $returns }}{{ index $returns "type" }}{{ if and (index $returns "description") (ne (index $returns "description") "") }} // {{ index $returns "description" }}{{ end }}{{ else }}{{ $returns }}{{ end }}{{ end }}{{ end }} {{ partial "components/api-methods-errors.html" (dict "commandName" $commandName "mappingId" $mappingId) }} {{ else }} -

No method signature available for this client.

+ {{ $status := default "" (index $cmdStatus $mappingId) }} + {{ if and (eq $status "generic_only") (index $config "genericCall") }} +

{{ index $config "clientName" }} has no dedicated method for this command. Send it with {{ index $config "genericCall" }}.

+ {{ else if eq $status "unsupported" }} +

This command isn't available through {{ index $config "clientName" }}.

+ {{ else }} +

No method signature available for this client.

+ {{ end }} {{ end }} {{ $first = false }} From 5dce264109772819bec34c1ff43d87d09d465a69 Mon Sep 17 00:00:00 2001 From: Andy Stark Date: Thu, 5 Nov 2026 13:12:21 +0000 Subject: [PATCH 2/2] DOC-7266 Backfill the status file from the DOC-7263 classification Records why 906 empty signature lists in the clients the tab renders have no signature: 759 generic-only and 147 unsupported, across 190 commands. Generated from the DOC-7263 classification and checked against that branch's data: every entry points at a list that is still empty there, and the 44 empty lists with no entry are the bare container rows (ACL, CLIENT, CLUSTER and so on), the HOTKEYS umbrella and redis-rs FT.CREATE, which keep the default message. A rendered build shows each entry as its message on the command page, except CLUSTER SYNCSLOTS and TRIMSLOTS, which have no command page. The backfill only adds this file, so it needs nothing from the DOC-7263 PR and cannot conflict with it. An entry for a list that later gets filled is never shown: the tab reads the status only when there are no signatures. ioredis and RedisVL are left out because the tab never renders them. Learned: the status file is independent of the data PRs, so the backfill did not have to wait for the merge Constraint: only list pairs whose signature list is empty; a stale entry is harmless but misleading to read Gaps: the generic-only and unsupported verdicts rest on finding no method; none were run against a server Ticket: DOC-7266 Co-Authored-By: Claude Sonnet 5.5 --- data/command-api-mapping-status.json | 1284 +++++++++++++++++++++++++- 1 file changed, 1277 insertions(+), 7 deletions(-) diff --git a/data/command-api-mapping-status.json b/data/command-api-mapping-status.json index bb6f04369c..79abe83ae4 100644 --- a/data/command-api-mapping-status.json +++ b/data/command-api-mapping-status.json @@ -1,18 +1,1288 @@ { - "CLUSTER NODES": { + "ACL": { + "jedis": "unsupported", + "go-redis": "unsupported", + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported" + }, + "ACL CAT": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only" + }, + "ACL DELUSER": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only" + }, + "ACL DRYRUN": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only" + }, + "ACL GENPASS": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only" + }, + "ACL GETUSER": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only" + }, + "ACL HELP": { + "jedis": "generic_only", + "go-redis": "generic_only", + "node_redis": "generic_only", + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only" + }, + "ACL LIST": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only" + }, + "ACL LOAD": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only" + }, + "ACL LOG": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only" + }, + "ACL SAVE": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only" + }, + "ACL SETUSER": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only" + }, + "ACL USERS": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only" + }, + "ACL WHOAMI": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only" + }, + "ASKING": { + "redis_py": "unsupported", + "go-redis": "unsupported", + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported", + "php": "unsupported", "redis_rs_sync": "generic_only", "redis_rs_async": "generic_only" }, - "ACL HELP": { - "go-redis": "generic_only" + "AUTH": { + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "BGREWRITEAOF": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "BGSAVE": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLIENT": { + "jedis": "unsupported", + "go-redis": "unsupported", + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported" + }, + "CLIENT CACHING": { + "go-redis": "generic_only", + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLIENT GETNAME": { + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported" + }, + "CLIENT GETREDIR": { + "go-redis": "generic_only", + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLIENT HELP": { + "redis_py": "generic_only", + "jedis": "generic_only", + "go-redis": "generic_only", + "node_redis": "generic_only", + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLIENT ID": { + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported" + }, + "CLIENT INFO": { + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLIENT KILL": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLIENT LIST": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLIENT NO-EVICT": { + "go-redis": "generic_only", + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLIENT NO-TOUCH": { + "go-redis": "generic_only", + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLIENT PAUSE": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLIENT REPLY": { + "go-redis": "generic_only", + "node_redis": "generic_only", + "lettuce_sync": "unsupported", + "lettuce_async": "unsupported", + "lettuce_reactive": "unsupported", + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLIENT SETINFO": { + "node_redis": "generic_only", + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLIENT SETNAME": { + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported" + }, + "CLIENT TRACKING": { + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLIENT TRACKINGINFO": { + "go-redis": "generic_only", + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLIENT UNBLOCK": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLIENT UNPAUSE": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLUSTER": { + "jedis": "unsupported", + "go-redis": "unsupported", + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLUSTER ADDSLOTS": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLUSTER ADDSLOTSRANGE": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLUSTER BUMPEPOCH": { + "redis_py": "unsupported", + "go-redis": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLUSTER COUNT-FAILURE-REPORTS": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLUSTER COUNTKEYSINSLOT": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLUSTER DELSLOTS": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLUSTER DELSLOTSRANGE": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLUSTER FAILOVER": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLUSTER FLUSHSLOTS": { + "redis_py": "unsupported", + "go-redis": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLUSTER FORGET": { + "redis_py": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLUSTER GETKEYSINSLOT": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLUSTER HELP": { + "jedis": "generic_only", + "go-redis": "generic_only", + "node_redis": "generic_only", + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLUSTER INFO": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" }, "CLUSTER KEYSLOT": { - "nredisstack_sync": "unsupported" + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" }, - "QUIT": { - "go-redis": "unsupported" + "CLUSTER LINKS": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLUSTER MEET": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLUSTER MIGRATION": { + "redis_py": "generic_only", + "jedis": "generic_only", + "go-redis": "generic_only", + "node_redis": "generic_only", + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLUSTER MYID": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLUSTER MYSHARDID": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLUSTER NODES": { + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLUSTER REPLICAS": { + "go-redis": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLUSTER REPLICATE": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLUSTER RESET": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLUSTER SAVECONFIG": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLUSTER SET-CONFIG-EPOCH": { + "go-redis": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLUSTER SETSLOT": { + "go-redis": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLUSTER SHARDS": { + "node_redis": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLUSTER SLAVES": { + "redis_py": "generic_only", + "node_redis": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLUSTER SLOT-STATS": { + "redis_py": "generic_only", + "jedis": "generic_only", + "go-redis": "generic_only", + "node_redis": "generic_only", + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLUSTER SLOTS": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CLUSTER SYNCSLOTS": { + "redis_py": "generic_only", + "jedis": "generic_only", + "go-redis": "generic_only", + "node_redis": "generic_only", + "lettuce_sync": "unsupported", + "lettuce_async": "unsupported", + "lettuce_reactive": "unsupported", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "COMMAND": { + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "COMMAND COUNT": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "COMMAND DOCS": { + "go-redis": "generic_only", + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "COMMAND GETKEYS": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "COMMAND GETKEYSANDFLAGS": { + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "COMMAND HELP": { + "redis_py": "generic_only", + "jedis": "generic_only", + "go-redis": "generic_only", + "node_redis": "generic_only", + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "COMMAND INFO": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "COMMAND LIST": { + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CONFIG": { + "jedis": "unsupported", + "go-redis": "unsupported", + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CONFIG GET": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CONFIG HELP": { + "redis_py": "generic_only", + "jedis": "generic_only", + "go-redis": "generic_only", + "node_redis": "generic_only", + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CONFIG RESETSTAT": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CONFIG REWRITE": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "CONFIG SET": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "DBSIZE": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "DEBUG": { + "node_redis": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "ECHO": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "EVAL": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "EVALSHA": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "EVALSHA_RO": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "EVAL_RO": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "FAILOVER": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "FCALL": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only" + }, + "FCALL_RO": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only" + }, + "FT.AGGREGATE": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "FT.ALIASADD": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "FT.ALIASDEL": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "FT.ALIASUPDATE": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "FT.ALTER": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "FT.CURSOR DEL": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "FT.CURSOR READ": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "FT.DICTADD": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "FT.DICTDEL": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "FT.DICTDUMP": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "FT.DROPINDEX": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "FT.EXPLAIN": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "FT.EXPLAINCLI": { + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only", + "php": "generic_only" + }, + "FT.HYBRID": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "FT.INFO": { + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "FT.PROFILE": { + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "FT.SEARCH": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "FT.SPELLCHECK": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "FT.SUGADD": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "FT.SUGDEL": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "FT.SUGGET": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "FT.SUGLEN": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "FT.SYNDUMP": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "FT.SYNUPDATE": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "FT.TAGVALS": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "FT._LIST": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "FUNCTION DELETE": { + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only" + }, + "FUNCTION DUMP": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only" + }, + "FUNCTION FLUSH": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only" + }, + "FUNCTION HELP": { + "redis_py": "generic_only", + "jedis": "generic_only", + "go-redis": "generic_only", + "node_redis": "generic_only", + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "php": "generic_only" + }, + "FUNCTION KILL": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only" + }, + "FUNCTION LIST": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only" + }, + "FUNCTION LOAD": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only" + }, + "FUNCTION RESTORE": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only" + }, + "FUNCTION STATS": { + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only" + }, + "HELLO": { + "jedis": "generic_only", + "lettuce_sync": "unsupported", + "lettuce_async": "unsupported", + "lettuce_reactive": "unsupported", + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported", + "php": "unsupported", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "HOTKEYS": { + "jedis": "unsupported", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only" + }, + "INFO": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "LASTSAVE": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "LATENCY": { + "jedis": "unsupported", + "go-redis": "unsupported", + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "LATENCY DOCTOR": { + "go-redis": "generic_only", + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "LATENCY GRAPH": { + "go-redis": "generic_only", + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "LATENCY HELP": { + "redis_py": "generic_only", + "jedis": "generic_only", + "go-redis": "generic_only", + "node_redis": "generic_only", + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "LATENCY HISTOGRAM": { + "jedis": "generic_only", + "go-redis": "generic_only", + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "LATENCY HISTORY": { + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "LATENCY LATEST": { + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "LATENCY RESET": { + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "LOLWUT": { + "go-redis": "generic_only", + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "MEMORY": { + "jedis": "unsupported", + "go-redis": "unsupported", + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "MEMORY DOCTOR": { + "go-redis": "generic_only", + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "MEMORY HELP": { + "redis_py": "unsupported", + "jedis": "generic_only", + "go-redis": "generic_only", + "node_redis": "generic_only", + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "MEMORY MALLOC-STATS": { + "go-redis": "generic_only", + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "MEMORY PURGE": { + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "MEMORY STATS": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "MEMORY USAGE": { + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "MODULE": { + "jedis": "unsupported", + "go-redis": "unsupported", + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "MODULE HELP": { + "redis_py": "generic_only", + "jedis": "generic_only", + "go-redis": "generic_only", + "node_redis": "generic_only", + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "MODULE LIST": { + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "MODULE LOAD": { + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "MODULE LOADEX": { + "node_redis": "generic_only", + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "MODULE UNLOAD": { + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" }, "MONITOR": { - "nredisstack_sync": "unsupported" + "lettuce_sync": "unsupported", + "lettuce_async": "unsupported", + "lettuce_reactive": "unsupported", + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "PSYNC": { + "jedis": "unsupported", + "go-redis": "unsupported", + "node_redis": "generic_only", + "lettuce_sync": "unsupported", + "lettuce_async": "unsupported", + "lettuce_reactive": "unsupported", + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported", + "php": "unsupported", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "PUBSUB CHANNELS": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "PUBSUB HELP": { + "redis_py": "generic_only", + "jedis": "generic_only", + "go-redis": "generic_only", + "node_redis": "generic_only", + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only" + }, + "PUBSUB NUMPAT": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "PUBSUB NUMSUB": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "PUBSUB SHARDCHANNELS": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only" + }, + "PUBSUB SHARDNUMSUB": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only" + }, + "QUIT": { + "go-redis": "unsupported", + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "READONLY": { + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "READWRITE": { + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "REPLCONF": { + "redis_py": "unsupported", + "jedis": "unsupported", + "go-redis": "unsupported", + "node_redis": "generic_only", + "lettuce_sync": "unsupported", + "lettuce_async": "unsupported", + "lettuce_reactive": "unsupported", + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported", + "php": "unsupported", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "REPLICAOF": { + "nredisstack_sync": "unsupported", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "RESET": { + "go-redis": "generic_only", + "lettuce_sync": "unsupported", + "lettuce_async": "unsupported", + "lettuce_reactive": "unsupported", + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "RESTORE-ASKING": { + "redis_py": "generic_only", + "jedis": "unsupported", + "go-redis": "unsupported", + "lettuce_sync": "unsupported", + "lettuce_async": "unsupported", + "lettuce_reactive": "unsupported", + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "ROLE": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "SAVE": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "SCRIPT DEBUG": { + "jedis": "generic_only", + "go-redis": "generic_only", + "lettuce_sync": "unsupported", + "lettuce_async": "unsupported", + "lettuce_reactive": "unsupported", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only" + }, + "SCRIPT EXISTS": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "SCRIPT FLUSH": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "SCRIPT HELP": { + "redis_py": "generic_only", + "jedis": "generic_only", + "go-redis": "generic_only", + "node_redis": "generic_only", + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only" + }, + "SCRIPT KILL": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only" + }, + "SELECT": { + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "SHUTDOWN": { + "nredisstack_async": "unsupported", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "SLAVEOF": { + "node_redis": "generic_only", + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "SLOWLOG": { + "jedis": "unsupported", + "go-redis": "unsupported", + "node_redis": "generic_only", + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "SLOWLOG GET": { + "node_redis": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "SLOWLOG HELP": { + "redis_py": "generic_only", + "jedis": "generic_only", + "go-redis": "generic_only", + "node_redis": "generic_only", + "lettuce_sync": "generic_only", + "lettuce_async": "generic_only", + "lettuce_reactive": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "SLOWLOG LEN": { + "node_redis": "generic_only", + "nredisstack_sync": "generic_only", + "nredisstack_async": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "SLOWLOG RESET": { + "node_redis": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "SSUBSCRIBE": { + "redis_rs_sync": "generic_only" + }, + "SUNSUBSCRIBE": { + "redis_rs_sync": "generic_only" + }, + "SWAPDB": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "SYNC": { + "jedis": "unsupported", + "go-redis": "unsupported", + "node_redis": "generic_only", + "lettuce_sync": "unsupported", + "lettuce_async": "unsupported", + "lettuce_reactive": "unsupported", + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported", + "php": "unsupported", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "TIME": { + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" + }, + "TRIMSLOTS": { + "redis_py": "generic_only", + "jedis": "unsupported", + "go-redis": "generic_only", + "node_redis": "generic_only", + "lettuce_sync": "unsupported", + "lettuce_async": "unsupported", + "lettuce_reactive": "unsupported", + "nredisstack_sync": "unsupported", + "nredisstack_async": "unsupported", + "php": "generic_only", + "redis_rs_sync": "generic_only", + "redis_rs_async": "generic_only" } }