 "ZINTERSTORE" {:fn-name "zinterstore", :fn-docstring "Intersect multiple sorted sets and store the resulting sorted set in a new key.\n\nZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]\n\nAvailable since: 2.0.0.\n\nTime complexity: O(N*K)+O(M*log(M)) worst case with N being the smallest input sorted set, K being the number of input sorted sets and M being the number of elements in the resulting sorted set.", :fn-params-fixed [destination numkeys key], :fn-params-more [destination numkeys key & args], :req-args-fixed ["ZINTERSTORE" destination numkeys key], :cluster-key-idx 1}
 "CLUSTER MEET" {:fn-name "cluster-meet", :fn-docstring "Force a node cluster to handshake with another node.\n\nCLUSTER MEET ip port\n\nAvailable since: 3.0.0.\n\nTime complexity: O(1)", :fn-params-fixed [ip port], :fn-params-more nil, :req-args-fixed ["CLUSTER" "MEET" ip port], :cluster-key-idx 2}
 "PFADD" {:fn-name "pfadd", :fn-docstring "Adds the specified elements to the specified HyperLogLog..\n\nPFADD key element [element ...]\n\nAvailable since: 2.8.9.\n\nTime complexity: O(1) to add every element.", :fn-params-fixed [key element], :fn-params-more [key element & args], :req-args-fixed ["PFADD" key element], :cluster-key-idx 1}
-"PFCOUNT" {:fn-name "pfcount", :fn-docstring "Return the approximated cardinality of the set(s) observed by the HyperLogLog at key(s)..\n\nPFCOUNT key [key ...]\n\nAvailable since: 2.8.9.\n\nTime complexity: O(1) with every small average constant times when called with a single key. O(N) with N being the number of keys, and much bigger constant times, when called with multiple keys.", :fn-params-fixed [key], :fn-params-more [key & args], :req-args-fixed ["PFCOUNT" key], :cluster-key-idx 1}
+"PFCOUNT" {:fn-name "pfcount", :fn-docstring "Return the approximated cardinality of the set(s) observed by the HyperLogLog at key(s)..\n\nPFCOUNT key [key ...]\n\nAvailable since: 2.8.9.\n\nTime complexity: O(1) with a very small average constant time when called with a single key. O(N) with N being the number of keys, and much bigger constant times, when called with multiple keys.", :fn-params-fixed [key], :fn-params-more [key & args], :req-args-fixed ["PFCOUNT" key], :cluster-key-idx 1}
 "CLUSTER INFO" {:fn-name "cluster-info", :fn-docstring "Provides info about Redis Cluster node state.\n\nCLUSTER INFO \n\nAvailable since: 3.0.0.\n\nTime complexity: O(1)", :fn-params-fixed [], :fn-params-more nil, :req-args-fixed ["CLUSTER" "INFO"], :cluster-key-idx 2}
 "CLUSTER SLAVES" {:fn-name "cluster-slaves", :fn-docstring "List slave nodes of the specified master node.\n\nCLUSTER SLAVES node-id\n\nAvailable since: 3.0.0.\n\nTime complexity: O(1)", :fn-params-fixed [node-id], :fn-params-more nil, :req-args-fixed ["CLUSTER" "SLAVES" node-id], :cluster-key-idx 2}
+"SWAPDB" {:fn-name "swapdb", :fn-docstring "Swaps two Redis databases.\n\nSWAPDB index index\n\nAvailable since: 4.0.0.\n\n", :fn-params-fixed [index index], :fn-params-more nil, :req-args-fixed ["SWAPDB" index index], :cluster-key-idx 1}
 "HSCAN" {:fn-name "hscan", :fn-docstring "Incrementally iterate hash fields and associated values.\n\nHSCAN key cursor [MATCH pattern] [COUNT count]\n\nAvailable since: 2.8.0.\n\nTime complexity: O(1) for every call. O(N) for a complete iteration, including enough command calls for the cursor to return back to 0. N is the number of elements inside the collection..", :fn-params-fixed [key cursor], :fn-params-more [key cursor & args], :req-args-fixed ["HSCAN" key cursor], :cluster-key-idx 1}
-"FLUSHDB" {:fn-name "flushdb", :fn-docstring "Remove all keys from the current database.\n\nFLUSHDB \n\nAvailable since: 1.0.0.\n\nTime complexity: ", :fn-params-fixed [], :fn-params-more nil, :req-args-fixed ["FLUSHDB"], :cluster-key-idx 1}
+"FLUSHDB" {:fn-name "flushdb", :fn-docstring "Remove all keys from the current database.\n\nFLUSHDB [ASYNC]\n\nAvailable since: 1.0.0.\n\n", :fn-params-fixed [], :fn-params-more [& args], :req-args-fixed ["FLUSHDB"], :cluster-key-idx 1}
 "PUBSUB" {:fn-name "pubsub", :fn-docstring "Inspect the state of the Pub/Sub subsystem.\n\nPUBSUB subcommand [argument [argument ...]]\n\nAvailable since: 2.8.0.\n\nTime complexity: O(N) for the CHANNELS subcommand, where N is the number of active channels, and assuming constant time pattern matching (relatively short channels and patterns). O(N) for the NUMSUB subcommand, where N is the number of requested channels. O(1) for the NUMPAT subcommand.", :fn-params-fixed [subcommand], :fn-params-more [subcommand & args], :req-args-fixed ["PUBSUB" subcommand], :cluster-key-idx 1}
 "ZSCAN" {:fn-name "zscan", :fn-docstring "Incrementally iterate sorted sets elements and associated scores.\n\nZSCAN key cursor [MATCH pattern] [COUNT count]\n\nAvailable since: 2.8.0.\n\nTime complexity: O(1) for every call. O(N) for a complete iteration, including enough command calls for the cursor to return back to 0. N is the number of elements inside the collection..", :fn-params-fixed [key cursor], :fn-params-more [key cursor & args], :req-args-fixed ["ZSCAN" key cursor], :cluster-key-idx 1}
 "PERSIST" {:fn-name "persist", :fn-docstring "Remove the expiration from a key.\n\nPERSIST key\n\nAvailable since: 2.2.0.\n\nTime complexity: O(1)", :fn-params-fixed [key], :fn-params-more nil, :req-args-fixed ["PERSIST" key], :cluster-key-idx 1}
 "ZSCORE" {:fn-name "zscore", :fn-docstring "Get the score associated with the given member in a sorted set.\n\nZSCORE key member\n\nAvailable since: 1.2.0.\n\nTime complexity: O(1)", :fn-params-fixed [key member], :fn-params-more nil, :req-args-fixed ["ZSCORE" key member], :cluster-key-idx 1}
-"DEBUG OBJECT" {:fn-name "debug-object", :fn-docstring "Get debugging information about a key.\n\nDEBUG OBJECT key\n\nAvailable since: 1.0.0.\n\nTime complexity: ", :fn-params-fixed [key], :fn-params-more nil, :req-args-fixed ["DEBUG" "OBJECT" key], :cluster-key-idx 2}
+"DEBUG OBJECT" {:fn-name "debug-object", :fn-docstring "Get debugging information about a key.\n\nDEBUG OBJECT key\n\nAvailable since: 1.0.0.\n\n", :fn-params-fixed [key], :fn-params-more nil, :req-args-fixed ["DEBUG" "OBJECT" key], :cluster-key-idx 2}
 "SPOP" {:fn-name "spop", :fn-docstring "Remove and return one or multiple random members from a set.\n\nSPOP key [count]\n\nAvailable since: 1.0.0.\n\nTime complexity: O(1)", :fn-params-fixed [key], :fn-params-more [key & args], :req-args-fixed ["SPOP" key], :cluster-key-idx 1}
 "BRPOPLPUSH" {:fn-name "brpoplpush", :fn-docstring "Pop a value from a list, push it to another list and return it; or block until one is available.\n\nBRPOPLPUSH source destination timeout\n\nAvailable since: 2.2.0.\n\nTime complexity: O(1)", :fn-params-fixed [source destination timeout], :fn-params-more nil, :req-args-fixed ["BRPOPLPUSH" source destination timeout], :cluster-key-idx 1}
-"AUTH" {:fn-name "auth", :fn-docstring "Authenticate to the server.\n\nAUTH password\n\nAvailable since: 1.0.0.\n\nTime complexity: ", :fn-params-fixed [password], :fn-params-more nil, :req-args-fixed ["AUTH" password], :cluster-key-idx 1}
+"AUTH" {:fn-name "auth", :fn-docstring "Authenticate to the server.\n\nAUTH password\n\nAvailable since: 1.0.0.\n\n", :fn-params-fixed [password], :fn-params-more nil, :req-args-fixed ["AUTH" password], :cluster-key-idx 1}
 "EXISTS" {:fn-name "exists", :fn-docstring "Determine if a key exists.\n\nEXISTS key [key ...]\n\nAvailable since: 1.0.0.\n\nTime complexity: O(1)", :fn-params-fixed [key], :fn-params-more [key & args], :req-args-fixed ["EXISTS" key], :cluster-key-idx 1}
 "CLUSTER FORGET" {:fn-name "cluster-forget", :fn-docstring "Remove a node from the nodes table.\n\nCLUSTER FORGET node-id\n\nAvailable since: 3.0.0.\n\nTime complexity: O(1)", :fn-params-fixed [node-id], :fn-params-more nil, :req-args-fixed ["CLUSTER" "FORGET" node-id], :cluster-key-idx 2}
 "CLUSTER SLOTS" {:fn-name "cluster-slots", :fn-docstring "Get array of Cluster slot to node mappings.\n\nCLUSTER SLOTS \n\nAvailable since: 3.0.0.\n\nTime complexity: O(N) where N is the total number of Cluster nodes", :fn-params-fixed [], :fn-params-more nil, :req-args-fixed ["CLUSTER" "SLOTS"], :cluster-key-idx 2}

"EVALSHA" {:fn-name "evalsha", :fn-docstring "Execute a Lua script server side.\n\nEVALSHA sha1 numkeys key [key ...] arg [arg ...]\n\nAvailable since: 2.6.0.\n\nTime complexity: Depends on the script that is executed.", :fn-params-fixed [sha1 numkeys key], :fn-params-more [sha1 numkeys key & args], :req-args-fixed ["EVALSHA" sha1 numkeys key], :cluster-key-idx 1}
"GET" {:fn-name "get", :fn-docstring "Get the value of a key.\n\nGET key\n\nAvailable since: 1.0.0.\n\nTime complexity: O(1)", :fn-params-fixed [key], :fn-params-more nil, :req-args-fixed ["GET" key], :cluster-key-idx 1}
"HLEN" {:fn-name "hlen", :fn-docstring "Get the number of fields in a hash.\n\nHLEN key\n\nAvailable since: 2.0.0.\n\nTime complexity: O(1)", :fn-params-fixed [key], :fn-params-more nil, :req-args-fixed ["HLEN" key], :cluster-key-idx 1}
"CONFIG REWRITE" {:fn-name "config-rewrite", :fn-docstring "Rewrite the configuration file with the in memory configuration.\n\nCONFIG REWRITE \n\nAvailable since: 2.8.0.\n\nTime complexity: ", :fn-params-fixed [], :fn-params-more nil, :req-args-fixed ["CONFIG" "REWRITE"], :cluster-key-idx 2}
"CLIENT KILL" {:fn-name "client-kill", :fn-docstring "Kill the connection of a client.\n\nCLIENT KILL [ip:port] [ID client-id] [TYPE normal|master|slave|pubsub] [ADDR ip:port] [SKIPME yes/no]\n\nAvailable since: 2.4.0.\n\nTime complexity: O(N) where N is the number of client connections", :fn-params-fixed [], :fn-params-more [& args], :req-args-fixed ["CLIENT" "KILL"], :cluster-key-idx 2}
"DISCARD" {:fn-name "discard", :fn-docstring "Discard all commands issued after MULTI.\n\nDISCARD \n\nAvailable since: 2.0.0.\n\nTime complexity: ", :fn-params-fixed [], :fn-params-more nil, :req-args-fixed ["DISCARD"], :cluster-key-idx 1}
"HGETALL" {:fn-name "hgetall", :fn-docstring "Get all the fields and values in a hash.\n\nHGETALL key\n\nAvailable since: 2.0.0.\n\nTime complexity: O(N) where N is the size of the hash.", :fn-params-fixed [key], :fn-params-more nil, :req-args-fixed ["HGETALL" key], :cluster-key-idx 1}
"HMGET" {:fn-name "hmget", :fn-docstring "Get the values of all the given hash fields.\n\nHMGET key field [field ...]\n\nAvailable since: 2.0.0.\n\nTime complexity: O(N) where N is the number of fields being requested.", :fn-params-fixed [key field], :fn-params-more [key field & args], :req-args-fixed ["HMGET" key field], :cluster-key-idx 1}
"CLIENT SETNAME" {:fn-name "client-setname", :fn-docstring "Set the current connection name.\n\nCLIENT SETNAME connection-name\n\nAvailable since: 2.6.9.\n\nTime complexity: O(1)", :fn-params-fixed [connection-name], :fn-params-more nil, :req-args-fixed ["CLIENT" "SETNAME" connection-name], :cluster-key-idx 2}

"ZADD" {:fn-name "zadd", :fn-docstring "Add one or more members to a sorted set, or update its score if it already exists.\n\nZADD key [NX|XX] [CH] [INCR] score member [score member ...]\n\nAvailable since: 1.2.0.\n\nTime complexity: O(log(N)) for each item added, where N is the number of elements in the sorted set.", :fn-params-fixed [key], :fn-params-more [key & args], :req-args-fixed ["ZADD" key], :cluster-key-idx 1}
"RPUSH" {:fn-name "rpush", :fn-docstring "Append one or multiple values to a list.\n\nRPUSH key value [value ...]\n\nAvailable since: 1.0.0.\n\nTime complexity: O(1)", :fn-params-fixed [key value], :fn-params-more [key value & args], :req-args-fixed ["RPUSH" key value], :cluster-key-idx 1}
"INCRBY" {:fn-name "incrby", :fn-docstring "Increment the integer value of a key by the given amount.\n\nINCRBY key increment\n\nAvailable since: 1.0.0.\n\nTime complexity: O(1)", :fn-params-fixed [key increment], :fn-params-more nil, :req-args-fixed ["INCRBY" key increment], :cluster-key-idx 1}
"ROLE" {:fn-name "role", :fn-docstring "Return the role of the instance in the context of replication.\n\nROLE \n\nAvailable since: 2.8.12.\n\n", :fn-params-fixed [], :fn-params-more nil, :req-args-fixed ["ROLE"], :cluster-key-idx 1}
"RENAMENX" {:fn-name "renamenx", :fn-docstring "Rename a key, only if the new key does not exist.\n\nRENAMENX key newkey\n\nAvailable since: 1.0.0.\n\nTime complexity: O(1)", :fn-params-fixed [key newkey], :fn-params-more nil, :req-args-fixed ["RENAMENX" key newkey], :cluster-key-idx 1}
"SETBIT" {:fn-name "setbit", :fn-docstring "Sets or clears the bit at offset in the string value stored at key.\n\nSETBIT key offset value\n\nAvailable since: 2.2.0.\n\nTime complexity: O(1)", :fn-params-fixed [key offset value], :fn-params-more nil, :req-args-fixed ["SETBIT" key offset value], :cluster-key-idx 1}
"LINSERT" {:fn-name "linsert", :fn-docstring "Insert an element before or after another element in a list.\n\nLINSERT key BEFORE|AFTER pivot value\n\nAvailable since: 2.2.0.\n\nTime complexity: O(N) where N is the number of elements to traverse before seeing the value pivot. This means that inserting somewhere on the left end on the list (head) can be considered O(1) and inserting somewhere on the right end (tail) is O(N).", :fn-params-fixed [key where pivot value], :fn-params-more nil, :req-args-fixed ["LINSERT" key where pivot value], :cluster-key-idx 1}
"FLUSHALL" {:fn-name "flushall", :fn-docstring "Remove all keys from all databases.\n\nFLUSHALL [ASYNC]\n\nAvailable since: 1.0.0.\n\n", :fn-params-fixed [], :fn-params-more [& args], :req-args-fixed ["FLUSHALL"], :cluster-key-idx 1}
"CLUSTER REPLICATE" {:fn-name "cluster-replicate", :fn-docstring "Reconfigure a node as a slave of the specified master node.\n\nCLUSTER REPLICATE node-id\n\nAvailable since: 3.0.0.\n\nTime complexity: O(1)", :fn-params-fixed [node-id], :fn-params-more nil, :req-args-fixed ["CLUSTER" "REPLICATE" node-id], :cluster-key-idx 2}
"SELECT" {:fn-name "select", :fn-docstring "Change the selected database for the current connection.\n\nSELECT index\n\nAvailable since: 1.0.0.\n\n", :fn-params-fixed [index], :fn-params-more nil, :req-args-fixed ["SELECT" index], :cluster-key-idx 1}
"MGET" {:fn-name "mget", :fn-docstring "Get the values of all the given keys.\n\nMGET key [key ...]\n\nAvailable since: 1.0.0.\n\nTime complexity: O(N) where N is the number of keys to retrieve.", :fn-params-fixed [key], :fn-params-more [key & args], :req-args-fixed ["MGET" key], :cluster-key-idx 1}
"MONITOR" {:fn-name "monitor", :fn-docstring "Listen for all requests received by the server in real time.\n\nMONITOR \n\nAvailable since: 1.0.0.\n\n", :fn-params-fixed [], :fn-params-more nil, :req-args-fixed ["MONITOR"], :cluster-key-idx 1}
"CLUSTER COUNT-FAILURE-REPORTS" {:fn-name "cluster-count-failure-reports", :fn-docstring "Return the number of failure reports active for a given node.\n\nCLUSTER COUNT-FAILURE-REPORTS node-id\n\nAvailable since: 3.0.0.\n\nTime complexity: O(N) where N is the number of failure reports", :fn-params-fixed [node-id], :fn-params-more nil, :req-args-fixed ["CLUSTER" "COUNT-FAILURE-REPORTS" node-id], :cluster-key-idx 2}
"HSET" {:fn-name "hset", :fn-docstring "Set the string value of a hash field.\n\nHSET key field value\n\nAvailable since: 2.0.0.\n\nTime complexity: O(1)", :fn-params-fixed [key field value], :fn-params-more nil, :req-args-fixed ["HSET" key field value], :cluster-key-idx 1}
"QUIT" {:fn-name "quit", :fn-docstring "Close the connection.\n\nQUIT \n\nAvailable since: 1.0.0.\n\n", :fn-params-fixed [], :fn-params-more nil, :req-args-fixed ["QUIT"], :cluster-key-idx 1}
"LTRIM" {:fn-name "ltrim", :fn-docstring "Trim a list to the specified range.\n\nLTRIM key start stop\n\nAvailable since: 1.0.0.\n\nTime complexity: O(N) where N is the number of elements to be removed by the operation.", :fn-params-fixed [key start stop], :fn-params-more nil, :req-args-fixed ["LTRIM" key start stop], :cluster-key-idx 1}
"SCAN" {:fn-name "scan", :fn-docstring "Incrementally iterate the keys space.\n\nSCAN cursor [MATCH pattern] [COUNT count]\n\nAvailable since: 2.8.0.\n\nTime complexity: O(1) for every call. O(N) for a complete iteration, including enough command calls for the cursor to return back to 0. N is the number of elements inside the collection.", :fn-params-fixed [cursor], :fn-params-more [cursor & args], :req-args-fixed ["SCAN" cursor], :cluster-key-idx 1}
"INCRBYFLOAT" {:fn-name "incrbyfloat", :fn-docstring "Increment the float value of a key by the given amount.\n\nINCRBYFLOAT key increment\n\nAvailable since: 2.6.0.\n\nTime complexity: O(1)", :fn-params-fixed [key increment], :fn-params-more nil, :req-args-fixed ["INCRBYFLOAT" key increment], :cluster-key-idx 1}
"CLIENT PAUSE" {:fn-name "client-pause", :fn-docstring "Stop processing commands from clients for some time.\n\nCLIENT PAUSE timeout\n\nAvailable since: 2.9.50.\n\nTime complexity: O(1)", :fn-params-fixed [timeout], :fn-params-more nil, :req-args-fixed ["CLIENT" "PAUSE" timeout], :cluster-key-idx 2}
"TOUCH" {:fn-name "touch", :fn-docstring "Alters the last access time of a key(s). Returns the number of existing keys specified..\n\nTOUCH key [key ...]\n\nAvailable since: 3.2.1.\n\nTime complexity: O(N) where N is the number of keys that will be touched.", :fn-params-fixed [key], :fn-params-more [key & args], :req-args-fixed ["TOUCH" key], :cluster-key-idx 1}
"RANDOMKEY" {:fn-name "randomkey", :fn-docstring "Return a random key from the keyspace.\n\nRANDOMKEY \n\nAvailable since: 1.0.0.\n\nTime complexity: O(1)", :fn-params-fixed [], :fn-params-more nil, :req-args-fixed ["RANDOMKEY"], :cluster-key-idx 1}
"LASTSAVE" {:fn-name "lastsave", :fn-docstring "Get the UNIX time stamp of the last successful save to disk.\n\nLASTSAVE \n\nAvailable since: 1.0.0.\n\n", :fn-params-fixed [], :fn-params-more nil, :req-args-fixed ["LASTSAVE"], :cluster-key-idx 1}
"SLOWLOG" {:fn-name "slowlog", :fn-docstring "Manages the Redis slow queries log.\n\nSLOWLOG subcommand [argument]\n\nAvailable since: 2.2.12.\n\n", :fn-params-fixed [subcommand], :fn-params-more [subcommand & args], :req-args-fixed ["SLOWLOG" subcommand], :cluster-key-idx 1}
"ZREVRANGE" {:fn-name "zrevrange", :fn-docstring "Return a range of members in a sorted set, by index, with scores ordered from high to low.\n\nZREVRANGE key start stop [WITHSCORES]\n\nAvailable since: 1.2.0.\n\nTime complexity: O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements returned.", :fn-params-fixed [key start stop], :fn-params-more [key start stop & args], :req-args-fixed ["ZREVRANGE" key start stop], :cluster-key-idx 1}
"SETEX" {:fn-name "setex", :fn-docstring "Set the value and expiration of a key.\n\nSETEX key seconds value\n\nAvailable since: 2.0.0.\n\nTime complexity: O(1)", :fn-params-fixed [key seconds value], :fn-params-more nil, :req-args-fixed ["SETEX" key seconds value], :cluster-key-idx 1}
"LPOP" {:fn-name "lpop", :fn-docstring "Remove and get the first element in a list.\n\nLPOP key\n\nAvailable since: 1.0.0.\n\nTime complexity: O(1)", :fn-params-fixed [key], :fn-params-more nil, :req-args-fixed ["LPOP" key], :cluster-key-idx 1}
