 "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}
+"XDEL" {:fn-name "xdel", :fn-docstring "Removes the specified entries from the stream. Returns the number of items actually deleted, that may be different from the number of IDs passed in case certain IDs do not exist..\n\nXDEL key ID [ID ...]\n\nAvailable since: 5.0.0.\n\nTime complexity: O(log(N)) with N being the number of items in the stream.", :fn-params-fixed [key ID], :fn-params-more [key ID & args], :req-args-fixed ["XDEL" key ID], :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}
+"ZPOPMIN" {:fn-name "zpopmin", :fn-docstring "Remove and return members with the lowest scores in a sorted set.\n\nZPOPMIN key [count]\n\nAvailable since: 5.0.0.\n\nTime complexity: O(log(N)*M) with N being the number of elements in the sorted set, and M being the number of elements popped.", :fn-params-fixed [key], :fn-params-more [key & args], :req-args-fixed ["ZPOPMIN" key], :cluster-key-idx 1}
+"XGROUP" {:fn-name "xgroup", :fn-docstring "Create, destroy, and manage consumer groups..\n\nXGROUP [CREATE key groupname id-or-$] [SETID key id-or-$] [DESTROY key groupname] [DELCONSUMER key groupname consumername]\n\nAvailable since: 5.0.0.\n\nTime complexity: ", :fn-params-fixed [], :fn-params-more [& args], :req-args-fixed ["XGROUP"], :cluster-key-idx 1}
 "MEMORY USAGE" {:fn-name "memory-usage", :fn-docstring "Estimate the memory usage of a key.\n\nMEMORY USAGE key [SAMPLES count]\n\nAvailable since: 4.0.0.\n\nTime complexity: O(N) where N is the number of samples.", :fn-params-fixed [key], :fn-params-more [key & args], :req-args-fixed ["MEMORY" "USAGE" key], :cluster-key-idx 2}
 "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}

"SUBSCRIBE" {:fn-name "subscribe", :fn-docstring "Listen for messages published to the given channels.\n\nSUBSCRIBE channel [channel ...]\n\nAvailable since: 2.0.0.\n\nTime complexity: O(N) where N is the number of channels to subscribe to.", :fn-params-fixed [channel], :fn-params-more [channel & args], :req-args-fixed ["SUBSCRIBE" channel], :cluster-key-idx 1}
"SETRANGE" {:fn-name "setrange", :fn-docstring "Overwrite part of a string at key starting at the specified offset.\n\nSETRANGE key offset value\n\nAvailable since: 2.2.0.\n\nTime complexity: O(1), not counting the time taken to copy the new string in place. Usually, this string is very small so the amortized complexity is O(1). Otherwise, complexity is O(M) with M being the length of the value argument.", :fn-params-fixed [key offset value], :fn-params-more nil, :req-args-fixed ["SETRANGE" key offset value], :cluster-key-idx 1}
"UNSUBSCRIBE" {:fn-name "unsubscribe", :fn-docstring "Stop listening for messages posted to the given channels.\n\nUNSUBSCRIBE [channel [channel ...]]\n\nAvailable since: 2.0.0.\n\nTime complexity: O(N) where N is the number of clients already subscribed to a channel.", :fn-params-fixed [], :fn-params-more [& args], :req-args-fixed ["UNSUBSCRIBE"], :cluster-key-idx 1}
"ZCARD" {:fn-name "zcard", :fn-docstring "Get the number of members in a sorted set.\n\nZCARD key\n\nAvailable since: 1.2.0.\n\nTime complexity: O(1)", :fn-params-fixed [key], :fn-params-more nil, :req-args-fixed ["ZCARD" key], :cluster-key-idx 1}
"HMSET" {:fn-name "hmset", :fn-docstring "Set multiple hash fields to multiple values.\n\nHMSET key field value [field value ...]\n\nAvailable since: 2.0.0.\n\nTime complexity: O(N) where N is the number of fields being set.", :fn-params-fixed [key field value], :fn-params-more [key field value & args], :req-args-fixed ["HMSET" key field value], :cluster-key-idx 1}
"ZINCRBY" {:fn-name "zincrby", :fn-docstring "Increment the score of a member in a sorted set.\n\nZINCRBY key increment member\n\nAvailable since: 1.2.0.\n\nTime complexity: O(log(N)) where N is the number of elements in the sorted set.", :fn-params-fixed [key increment member], :fn-params-more nil, :req-args-fixed ["ZINCRBY" key increment member], :cluster-key-idx 1}

"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}
"XCLAIM" {:fn-name "xclaim", :fn-docstring ".\n\nXCLAIM key group consumer min-idle-time ID [ID ...] [IDLE ms] [TIME ms-unix-time] [RETRYCOUNT count] [FORCE] [JUSTID]\n\nAvailable since: 5.0.0.\n\nTime complexity: ", :fn-params-fixed [key group consumer min-idle-time ID], :fn-params-more [key group consumer min-idle-time ID & args], :req-args-fixed ["XCLAIM" key group consumer min-idle-time ID], :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}
