 "CLUSTER KEYSLOT" {:fn-name "cluster-keyslot", :fn-docstring "Returns the hash slot of the specified key.\n\nCLUSTER KEYSLOT key\n\nAvailable since: 3.0.0.\n\nTime complexity: O(N) where N is the number of bytes in the key", :fn-params-fixed [key], :fn-params-more nil, :req-args-fixed ["CLUSTER" "KEYSLOT" key], :cluster-key-idx 2}
 "BITPOS" {:fn-name "bitpos", :fn-docstring "Find first bit set or clear in a string.\n\nBITPOS key bit [start] [end]\n\nAvailable since: 2.8.7.\n\nTime complexity: O(N)", :fn-params-fixed [key bit], :fn-params-more [key bit & args], :req-args-fixed ["BITPOS" key bit], :cluster-key-idx 1}
 "SCRIPT LOAD" {:fn-name "script-load", :fn-docstring "Load the specified Lua script into the script cache..\n\nSCRIPT LOAD script\n\nAvailable since: 2.6.0.\n\nTime complexity: O(N) with N being the length in bytes of the script body.", :fn-params-fixed [script], :fn-params-more nil, :req-args-fixed ["SCRIPT" "LOAD" script], :cluster-key-idx 2}
-"SLAVEOF" {:fn-name "slaveof", :fn-docstring "Make the server a slave of another instance, or promote it as master.\n\nSLAVEOF host port\n\nAvailable since: 1.0.0.\n\nTime complexity: ", :fn-params-fixed [host port], :fn-params-more nil, :req-args-fixed ["SLAVEOF" host port], :cluster-key-idx 1}
+"SLAVEOF" {:fn-name "slaveof", :fn-docstring "Make the server a slave of another instance, or promote it as master.\n\nSLAVEOF host port\n\nAvailable since: 1.0.0.\n\n", :fn-params-fixed [host port], :fn-params-more nil, :req-args-fixed ["SLAVEOF" host port], :cluster-key-idx 1}
 "CLUSTER FAILOVER" {:fn-name "cluster-failover", :fn-docstring "Forces a slave to perform a manual failover of its master..\n\nCLUSTER FAILOVER [FORCE|TAKEOVER]\n\nAvailable since: 3.0.0.\n\nTime complexity: O(1)", :fn-params-fixed [], :fn-params-more [& args], :req-args-fixed ["CLUSTER" "FAILOVER"], :cluster-key-idx 2}
 "CLUSTER SET-CONFIG-EPOCH" {:fn-name "cluster-set-config-epoch", :fn-docstring "Set the configuration epoch in a new node.\n\nCLUSTER SET-CONFIG-EPOCH config-epoch\n\nAvailable since: 3.0.0.\n\nTime complexity: O(1)", :fn-params-fixed [config-epoch], :fn-params-more nil, :req-args-fixed ["CLUSTER" "SET-CONFIG-EPOCH" config-epoch], :cluster-key-idx 2}
 "EXPIREAT" {:fn-name "expireat", :fn-docstring "Set the expiration for a key as a UNIX timestamp.\n\nEXPIREAT key timestamp\n\nAvailable since: 1.2.0.\n\nTime complexity: O(1)", :fn-params-fixed [key timestamp], :fn-params-more nil, :req-args-fixed ["EXPIREAT" key timestamp], :cluster-key-idx 1}

"CLIENT LIST" {:fn-name "client-list", :fn-docstring "Get the list of client connections.\n\nCLIENT LIST \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 nil, :req-args-fixed ["CLIENT" "LIST"], :cluster-key-idx 2}
"CLIENT REPLY" {:fn-name "client-reply", :fn-docstring "Instruct the server whether to reply to commands.\n\nCLIENT REPLY ON|OFF|SKIP\n\nAvailable since: 3.2.\n\nTime complexity: O(1)", :fn-params-fixed [reply-mode], :fn-params-more nil, :req-args-fixed ["CLIENT" "REPLY" reply-mode], :cluster-key-idx 2}
"DECR" {:fn-name "decr", :fn-docstring "Decrement the integer value of a key by one.\n\nDECR key\n\nAvailable since: 1.0.0.\n\nTime complexity: O(1)", :fn-params-fixed [key], :fn-params-more nil, :req-args-fixed ["DECR" key], :cluster-key-idx 1}
"MULTI" {:fn-name "multi", :fn-docstring "Mark the start of a transaction block.\n\nMULTI \n\nAvailable since: 1.2.0.\n\nTime complexity: ", :fn-params-fixed [], :fn-params-more nil, :req-args-fixed ["MULTI"], :cluster-key-idx 1}
"DEBUG SEGFAULT" {:fn-name "debug-segfault", :fn-docstring "Make the server crash.\n\nDEBUG SEGFAULT \n\nAvailable since: 1.0.0.\n\nTime complexity: ", :fn-params-fixed [], :fn-params-more nil, :req-args-fixed ["DEBUG" "SEGFAULT"], :cluster-key-idx 2}
"HDEL" {:fn-name "hdel", :fn-docstring "Delete one or more hash fields.\n\nHDEL key field [field ...]\n\nAvailable since: 2.0.0.\n\nTime complexity: O(N) where N is the number of fields to be removed.", :fn-params-fixed [key field], :fn-params-more [key field & args], :req-args-fixed ["HDEL" key field], :cluster-key-idx 1}
"SADD" {:fn-name "sadd", :fn-docstring "Add one or more members to a set.\n\nSADD key member [member ...]\n\nAvailable since: 1.0.0.\n\nTime complexity: O(N) where N is the number of members to be added.", :fn-params-fixed [key member], :fn-params-more [key member & args], :req-args-fixed ["SADD" key member], :cluster-key-idx 1}
"LREM" {:fn-name "lrem", :fn-docstring "Remove elements from a list.\n\nLREM key count value\n\nAvailable since: 1.0.0.\n\nTime complexity: O(N) where N is the length of the list.", :fn-params-fixed [key count value], :fn-params-more nil, :req-args-fixed ["LREM" key count value], :cluster-key-idx 1}
"UNWATCH" {:fn-name "unwatch", :fn-docstring "Forget about all watched keys.\n\nUNWATCH \n\nAvailable since: 2.2.0.\n\nTime complexity: O(1)", :fn-params-fixed [], :fn-params-more nil, :req-args-fixed ["UNWATCH"], :cluster-key-idx 1}
"WAIT" {:fn-name "wait", :fn-docstring "Wait for the synchronous replication of all the write commands sent in the context of the current connection.\n\nWAIT numslaves timeout\n\nAvailable since: 3.0.0.\n\nTime complexity: O(1)", :fn-params-fixed [numslaves timeout], :fn-params-more nil, :req-args-fixed ["WAIT" numslaves timeout], :cluster-key-idx 1}
"SINTERSTORE" {:fn-name "sinterstore", :fn-docstring "Intersect multiple sets and store the resulting set in a key.\n\nSINTERSTORE destination key [key ...]\n\nAvailable since: 1.0.0.\n\nTime complexity: O(N*M) worst case where N is the cardinality of the smallest set and M is the number of sets.", :fn-params-fixed [destination key], :fn-params-more [destination key & args], :req-args-fixed ["SINTERSTORE" destination key], :cluster-key-idx 1}
"SDIFF" {:fn-name "sdiff", :fn-docstring "Subtract multiple sets.\n\nSDIFF key [key ...]\n\nAvailable since: 1.0.0.\n\nTime complexity: O(N) where N is the total number of elements in all given sets.", :fn-params-fixed [key], :fn-params-more [key & args], :req-args-fixed ["SDIFF" key], :cluster-key-idx 1}
"INFO" {:fn-name "info", :fn-docstring "Get information and statistics about the server.\n\nINFO [section]\n\nAvailable since: 1.0.0.\n\nTime complexity: ", :fn-params-fixed [], :fn-params-more [& args], :req-args-fixed ["INFO"], :cluster-key-idx 1}
"GEOADD" {:fn-name "geoadd", :fn-docstring "Add one or more geospatial items in the geospatial index represented using a sorted set.\n\nGEOADD key longitude latitude member [longitude latitude member ...]\n\nAvailable since: 3.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 longitude latitude member], :fn-params-more [key longitude latitude member & args], :req-args-fixed ["GEOADD" key longitude latitude member], :cluster-key-idx 1}
"LPUSHX" {:fn-name "lpushx", :fn-docstring "Prepend a value to a list, only if the list exists.\n\nLPUSHX key value\n\nAvailable since: 2.2.0.\n\nTime complexity: O(1)", :fn-params-fixed [key value], :fn-params-more nil, :req-args-fixed ["LPUSHX" key value], :cluster-key-idx 1}
"APPEND" {:fn-name "append", :fn-docstring "Append a value to a key.\n\nAPPEND key value\n\nAvailable since: 2.0.0.\n\nTime complexity: O(1). The amortized time complexity is O(1) assuming the appended value is small and the already present value is of any size, since the dynamic string library used by Redis will double the free space available on every reallocation.", :fn-params-fixed [key value], :fn-params-more nil, :req-args-fixed ["APPEND" key value], :cluster-key-idx 1}

"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 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 [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\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\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}
