+/* Automatically generated by utils/generate-command-help.rb, do not edit. */
-// Auto-generated, do not edit.
+#ifndef __REDIS_HELP_H
+#define __REDIS_HELP_H
-#include <stdio.h>
-#include <string.h>
-
-/*
- * List command groups.
- */
-
-#define GROUPS \
- G(UNKNOWN, "unknown") \
- G(SET, "set") \
- G(LIST, "list") \
- G(HASH, "hash") \
- G(GENERIC, "generic") \
- G(PUBSUB, "pubsub") \
- G(STRING, "string") \
- G(SERVER, "server") \
- G(CONNECTION, "connection") \
- G(TRANSACTIONS, "transactions") \
- G(SORTED_SET, "sorted_set")
-
-/*
- * Command group types.
- */
-
-typedef enum {
- #define G(GROUP, _) COMMAND_GROUP_##GROUP,
- GROUPS
- #undef G
- COMMAND_GROUP_LENGTH
-} command_group_type_t;
-
-/*
- * Command group type names.
- */
-
-static char *command_group_type_names[] = {
- #define G(_, STR) STR,
- GROUPS
- #undef G
+static char *commandGroups[] = {
+ "generic",
+ "string",
+ "list",
+ "set",
+ "sorted_set",
+ "hash",
+ "pubsub",
+ "transactions",
+ "connection",
+ "server",
+ "scripting"
};
-/*
- * Command help struct.
- */
-
-struct command_help {
+struct commandHelp {
char *name;
char *params;
char *summary;
- command_group_type_t group;
+ int group;
char *since;
-} command_help[] = {
- { "APPEND",
+} commandHelp[] = {
+ { "APPEND",
"key value",
"Append a value to a key",
- COMMAND_GROUP_STRING,
- "1.3.3" }
-, { "AUTH",
+ 1,
+ "2.0.0" },
+ { "AUTH",
"password",
"Authenticate to the server",
- COMMAND_GROUP_CONNECTION,
- "0.08" }
-, { "BGREWRITEAOF",
+ 8,
+ "1.0.0" },
+ { "BGREWRITEAOF",
"-",
"Asynchronously rewrite the append-only file",
- COMMAND_GROUP_SERVER,
- "1.07" }
-, { "BGSAVE",
+ 9,
+ "1.0.0" },
+ { "BGSAVE",
"-",
"Asynchronously save the dataset to disk",
- COMMAND_GROUP_SERVER,
- "0.07" }
-, { "BLPOP",
+ 9,
+ "1.0.0" },
+ { "BITCOUNT",
+ "key [start] [end]",
+ "Count set bits in a string",
+ 1,
+ "2.6.0" },
+ { "BITOP",
+ "operation destkey key [key ...]",
+ "Perform bitwise operations between strings",
+ 1,
+ "2.6.0" },
+ { "BLPOP",
"key [key ...] timeout",
"Remove and get the first element in a list, or block until one is available",
- COMMAND_GROUP_LIST,
- "1.3.1" }
-, { "BRPOP",
+ 2,
+ "2.0.0" },
+ { "BRPOP",
"key [key ...] timeout",
"Remove and get the last element in a list, or block until one is available",
- COMMAND_GROUP_LIST,
- "1.3.1" }
-, { "CONFIG GET",
+ 2,
+ "2.0.0" },
+ { "BRPOPLPUSH",
+ "source destination timeout",
+ "Pop a value from a list, push it to another list and return it; or block until one is available",
+ 2,
+ "2.2.0" },
+ { "CLIENT KILL",
+ "ip:port",
+ "Kill the connection of a client",
+ 9,
+ "2.4.0" },
+ { "CLIENT LIST",
+ "-",
+ "Get the list of client connections",
+ 9,
+ "2.4.0" },
+ { "CONFIG GET",
"parameter",
"Get the value of a configuration parameter",
- COMMAND_GROUP_SERVER,
- "2.0" }
-, { "CONFIG SET",
+ 9,
+ "2.0.0" },
+ { "CONFIG RESETSTAT",
+ "-",
+ "Reset the stats returned by INFO",
+ 9,
+ "2.0.0" },
+ { "CONFIG SET",
"parameter value",
"Set a configuration parameter to the given value",
- COMMAND_GROUP_SERVER,
- "2.0" }
-, { "DBSIZE",
+ 9,
+ "2.0.0" },
+ { "DBSIZE",
"-",
"Return the number of keys in the selected database",
- COMMAND_GROUP_SERVER,
- "0.07" }
-, { "DEBUG OBJECT",
+ 9,
+ "1.0.0" },
+ { "DEBUG OBJECT",
"key",
"Get debugging information about a key",
- COMMAND_GROUP_SERVER,
- "0.101" }
-, { "DEBUG SEGFAULT",
+ 9,
+ "1.0.0" },
+ { "DEBUG SEGFAULT",
"-",
"Make the server crash",
- COMMAND_GROUP_SERVER,
- "0.101" }
-, { "DECR",
- "key decrement",
+ 9,
+ "1.0.0" },
+ { "DECR",
+ "key",
"Decrement the integer value of a key by one",
- COMMAND_GROUP_STRING,
- "0.07" }
-, { "DECRBY",
+ 1,
+ "1.0.0" },
+ { "DECRBY",
"key decrement",
"Decrement the integer value of a key by the given number",
- COMMAND_GROUP_STRING,
- "0.07" }
-, { "DEL",
+ 1,
+ "1.0.0" },
+ { "DEL",
"key [key ...]",
"Delete a key",
- COMMAND_GROUP_GENERIC,
- "0.07" }
-, { "DISCARD",
+ 0,
+ "1.0.0" },
+ { "DISCARD",
"-",
"Discard all commands issued after MULTI",
- COMMAND_GROUP_TRANSACTIONS,
- "1.3.3" }
-, { "ECHO",
+ 7,
+ "2.0.0" },
+ { "DUMP",
+ "key",
+ "Return a serialized version of the value stored at the specified key.",
+ 0,
+ "2.6.0" },
+ { "ECHO",
"message",
"Echo the given string",
- COMMAND_GROUP_CONNECTION,
- "0.07" }
-, { "EXEC",
+ 8,
+ "1.0.0" },
+ { "EVAL",
+ "script numkeys key [key ...] arg [arg ...]",
+ "Execute a Lua script server side",
+ 10,
+ "2.6.0" },
+ { "EVALSHA",
+ "sha1 numkeys key [key ...] arg [arg ...]",
+ "Execute a Lua script server side",
+ 10,
+ "2.6.0" },
+ { "EXEC",
"-",
"Execute all commands issued after MULTI",
- COMMAND_GROUP_TRANSACTIONS,
- "1.1.95" }
-, { "EXISTS",
+ 7,
+ "1.2.0" },
+ { "EXISTS",
"key",
"Determine if a key exists",
- COMMAND_GROUP_SERVER,
- "0.07" }
-, { "EXPIRE",
+ 0,
+ "1.0.0" },
+ { "EXPIRE",
"key seconds",
"Set a key's time to live in seconds",
- COMMAND_GROUP_GENERIC,
- "0.09" }
-, { "EXPIREAT",
+ 0,
+ "1.0.0" },
+ { "EXPIREAT",
"key timestamp",
"Set the expiration for a key as a UNIX timestamp",
- COMMAND_GROUP_GENERIC,
- "1.1" }
-, { "FLUSHALL",
+ 0,
+ "1.2.0" },
+ { "FLUSHALL",
"-",
"Remove all keys from all databases",
- COMMAND_GROUP_SERVER,
- "0.07" }
-, { "FLUSHDB",
+ 9,
+ "1.0.0" },
+ { "FLUSHDB",
"-",
"Remove all keys from the current database",
- COMMAND_GROUP_SERVER,
- "0.07" }
-, { "GET",
+ 9,
+ "1.0.0" },
+ { "GET",
"key",
"Get the value of a key",
- COMMAND_GROUP_STRING,
- "0.07" }
-, { "GETSET",
+ 1,
+ "1.0.0" },
+ { "GETBIT",
+ "key offset",
+ "Returns the bit value at offset in the string value stored at key",
+ 1,
+ "2.2.0" },
+ { "GETRANGE",
+ "key start end",
+ "Get a substring of the string stored at a key",
+ 1,
+ "2.4.0" },
+ { "GETSET",
"key value",
"Set the string value of a key and return its old value",
- COMMAND_GROUP_STRING,
- "0.091" }
-, { "HDEL",
- "key field",
- "Delete a hash field",
- COMMAND_GROUP_HASH,
- "1.3.10" }
-, { "HEXISTS",
+ 1,
+ "1.0.0" },
+ { "HDEL",
+ "key field [field ...]",
+ "Delete one or more hash fields",
+ 5,
+ "2.0.0" },
+ { "HEXISTS",
"key field",
"Determine if a hash field exists",
- COMMAND_GROUP_HASH,
- "1.3.10" }
-, { "HGET",
+ 5,
+ "2.0.0" },
+ { "HGET",
"key field",
"Get the value of a hash field",
- COMMAND_GROUP_HASH,
- "1.3.10" }
-, { "HGETALL",
+ 5,
+ "2.0.0" },
+ { "HGETALL",
"key",
"Get all the fields and values in a hash",
- COMMAND_GROUP_HASH,
- "1.3.10" }
-, { "HINCRBY",
+ 5,
+ "2.0.0" },
+ { "HINCRBY",
"key field increment",
"Increment the integer value of a hash field by the given number",
- COMMAND_GROUP_HASH,
- "1.3.10" }
-, { "HKEYS",
+ 5,
+ "2.0.0" },
+ { "HINCRBYFLOAT",
+ "key field increment",
+ "Increment the float value of a hash field by the given amount",
+ 5,
+ "2.6.0" },
+ { "HKEYS",
"key",
"Get all the fields in a hash",
- COMMAND_GROUP_HASH,
- "1.3.10" }
-, { "HLEN",
+ 5,
+ "2.0.0" },
+ { "HLEN",
"key",
"Get the number of fields in a hash",
- COMMAND_GROUP_HASH,
- "1.3.10" }
-, { "HMGET",
+ 5,
+ "2.0.0" },
+ { "HMGET",
"key field [field ...]",
"Get the values of all the given hash fields",
- COMMAND_GROUP_HASH,
- "1.3.10" }
-, { "HMSET",
+ 5,
+ "2.0.0" },
+ { "HMSET",
"key field value [field value ...]",
"Set multiple hash fields to multiple values",
- COMMAND_GROUP_HASH,
- "1.3.8" }
-, { "HSET",
+ 5,
+ "2.0.0" },
+ { "HSET",
"key field value",
"Set the string value of a hash field",
- COMMAND_GROUP_HASH,
- "1.3.10" }
-, { "HSETNX",
+ 5,
+ "2.0.0" },
+ { "HSETNX",
"key field value",
"Set the value of a hash field, only if the field does not exist",
- COMMAND_GROUP_HASH,
- "1.3.8" }
-, { "HVALS",
+ 5,
+ "2.0.0" },
+ { "HVALS",
"key",
"Get all the values in a hash",
- COMMAND_GROUP_HASH,
- "1.3.10" }
-, { "INCR",
+ 5,
+ "2.0.0" },
+ { "INCR",
"key",
"Increment the integer value of a key by one",
- COMMAND_GROUP_STRING,
- "0.07" }
-, { "INCRBY",
+ 1,
+ "1.0.0" },
+ { "INCRBY",
+ "key increment",
+ "Increment the integer value of a key by the given amount",
+ 1,
+ "1.0.0" },
+ { "INCRBYFLOAT",
"key increment",
- "Increment the integer value of a key by the given number",
- COMMAND_GROUP_STRING,
- "0.07" }
-, { "INFO",
+ "Increment the float value of a key by the given amount",
+ 1,
+ "2.6.0" },
+ { "INFO",
"-",
"Get information and statistics about the server",
- COMMAND_GROUP_SERVER,
- "0.07" }
-, { "KEYS",
+ 9,
+ "1.0.0" },
+ { "KEYS",
"pattern",
"Find all keys matching the given pattern",
- COMMAND_GROUP_GENERIC,
- "0.07" }
-, { "LASTSAVE",
+ 0,
+ "1.0.0" },
+ { "LASTSAVE",
"-",
"Get the UNIX time stamp of the last successful save to disk",
- COMMAND_GROUP_SERVER,
- "0.07" }
-, { "LINDEX",
+ 9,
+ "1.0.0" },
+ { "LINDEX",
"key index",
"Get an element from a list by its index",
- COMMAND_GROUP_LIST,
- "0.07" }
-, { "LINSERT",
+ 2,
+ "1.0.0" },
+ { "LINSERT",
"key BEFORE|AFTER pivot value",
"Insert an element before or after another element in a list",
- COMMAND_GROUP_LIST,
- "2.1.1" }
-, { "LLEN",
+ 2,
+ "2.2.0" },
+ { "LLEN",
"key",
"Get the length of a list",
- COMMAND_GROUP_LIST,
- "0.07" }
-, { "LPOP",
+ 2,
+ "1.0.0" },
+ { "LPOP",
"key",
"Remove and get the first element in a list",
- COMMAND_GROUP_LIST,
- "0.07" }
-, { "LPUSH",
- "key value",
- "Prepend a value to a list",
- COMMAND_GROUP_LIST,
- "0.07" }
-, { "LPUSHX",
+ 2,
+ "1.0.0" },
+ { "LPUSH",
+ "key value [value ...]",
+ "Prepend one or multiple values to a list",
+ 2,
+ "1.0.0" },
+ { "LPUSHX",
"key value",
"Prepend a value to a list, only if the list exists",
- COMMAND_GROUP_LIST,
- "2.1.1" }
-, { "LRANGE",
+ 2,
+ "2.2.0" },
+ { "LRANGE",
"key start stop",
"Get a range of elements from a list",
- COMMAND_GROUP_LIST,
- "0.07" }
-, { "LREM",
+ 2,
+ "1.0.0" },
+ { "LREM",
"key count value",
"Remove elements from a list",
- COMMAND_GROUP_LIST,
- "0.07" }
-, { "LSET",
+ 2,
+ "1.0.0" },
+ { "LSET",
"key index value",
"Set the value of an element in a list by its index",
- COMMAND_GROUP_LIST,
- "0.07" }
-, { "LTRIM",
+ 2,
+ "1.0.0" },
+ { "LTRIM",
"key start stop",
"Trim a list to the specified range",
- COMMAND_GROUP_LIST,
- "0.07" }
-, { "MGET",
+ 2,
+ "1.0.0" },
+ { "MGET",
"key [key ...]",
"Get the values of all the given keys",
- COMMAND_GROUP_STRING,
- "0.07" }
-, { "MONITOR",
+ 1,
+ "1.0.0" },
+ { "MIGRATE",
+ "host port key destination-db timeout",
+ "Atomically transfer a key from a Redis instance to another one.",
+ 0,
+ "2.6.0" },
+ { "MONITOR",
"-",
"Listen for all requests received by the server in real time",
- COMMAND_GROUP_SERVER,
- "0.07" }
-, { "MOVE",
+ 9,
+ "1.0.0" },
+ { "MOVE",
"key db",
"Move a key to another database",
- COMMAND_GROUP_GENERIC,
- "0.07" }
-, { "MSET",
+ 0,
+ "1.0.0" },
+ { "MSET",
"key value [key value ...]",
"Set multiple keys to multiple values",
- COMMAND_GROUP_STRING,
- "1.001" }
-, { "MSETNX",
+ 1,
+ "1.0.1" },
+ { "MSETNX",
"key value [key value ...]",
"Set multiple keys to multiple values, only if none of the keys exist",
- COMMAND_GROUP_STRING,
- "1.001" }
-, { "MULTI",
+ 1,
+ "1.0.1" },
+ { "MULTI",
"-",
"Mark the start of a transaction block",
- COMMAND_GROUP_TRANSACTIONS,
- "1.1.95" }
-, { "PERSIST",
+ 7,
+ "1.2.0" },
+ { "OBJECT",
+ "subcommand [arguments [arguments ...]]",
+ "Inspect the internals of Redis objects",
+ 0,
+ "2.2.3" },
+ { "PERSIST",
"key",
"Remove the expiration from a key",
- COMMAND_GROUP_GENERIC,
- "2.1.2" }
-, { "PING",
+ 0,
+ "2.2.0" },
+ { "PEXPIRE",
+ "key milliseconds",
+ "Set a key's time to live in milliseconds",
+ 0,
+ "2.6.0" },
+ { "PEXPIREAT",
+ "key milliseconds-timestamp",
+ "Set the expiration for a key as a UNIX timestamp specified in milliseconds",
+ 0,
+ "2.6.0" },
+ { "PING",
"-",
"Ping the server",
- COMMAND_GROUP_CONNECTION,
- "0.07" }
-, { "PSUBSCRIBE",
- "pattern",
+ 8,
+ "1.0.0" },
+ { "PSETEX",
+ "key milliseconds value",
+ "Set the value and expiration in milliseconds of a key",
+ 1,
+ "2.6.0" },
+ { "PSUBSCRIBE",
+ "pattern [pattern ...]",
"Listen for messages published to channels matching the given patterns",
- COMMAND_GROUP_PUBSUB,
- "1.3.8" }
-, { "PUBLISH",
+ 6,
+ "2.0.0" },
+ { "PTTL",
+ "key",
+ "Get the time to live for a key in milliseconds",
+ 0,
+ "2.6.0" },
+ { "PUBLISH",
"channel message",
"Post a message to a channel",
- COMMAND_GROUP_PUBSUB,
- "1.3.8" }
-, { "PUNSUBSCRIBE",
+ 6,
+ "2.0.0" },
+ { "PUNSUBSCRIBE",
"[pattern [pattern ...]]",
"Stop listening for messages posted to channels matching the given patterns",
- COMMAND_GROUP_PUBSUB,
- "1.3.8" }
-, { "QUIT",
+ 6,
+ "2.0.0" },
+ { "QUIT",
"-",
"Close the connection",
- COMMAND_GROUP_CONNECTION,
- "0.07" }
-, { "RANDOMKEY",
+ 8,
+ "1.0.0" },
+ { "RANDOMKEY",
"-",
"Return a random key from the keyspace",
- COMMAND_GROUP_GENERIC,
- "0.07" }
-, { "RENAME",
- "old new",
+ 0,
+ "1.0.0" },
+ { "RENAME",
+ "key newkey",
"Rename a key",
- COMMAND_GROUP_GENERIC,
- "0.07" }
-, { "RENAMENX",
- "old new",
+ 0,
+ "1.0.0" },
+ { "RENAMENX",
+ "key newkey",
"Rename a key, only if the new key does not exist",
- COMMAND_GROUP_GENERIC,
- "0.07" }
-, { "RPOP",
+ 0,
+ "1.0.0" },
+ { "RESTORE",
+ "key ttl serialized-value",
+ "Create a key using the provided serialized value, previously obtained using DUMP.",
+ 0,
+ "2.6.0" },
+ { "RPOP",
"key",
"Remove and get the last element in a list",
- COMMAND_GROUP_LIST,
- "0.07" }
-, { "RPOPLPUSH",
+ 2,
+ "1.0.0" },
+ { "RPOPLPUSH",
"source destination",
"Remove the last element in a list, append it to another list and return it",
- COMMAND_GROUP_LIST,
- "1.1" }
-, { "RPUSH",
- "key value",
- "Append a value to a list",
- COMMAND_GROUP_LIST,
- "0.07" }
-, { "RPUSHX",
+ 2,
+ "1.2.0" },
+ { "RPUSH",
+ "key value [value ...]",
+ "Append one or multiple values to a list",
+ 2,
+ "1.0.0" },
+ { "RPUSHX",
"key value",
"Append a value to a list, only if the list exists",
- COMMAND_GROUP_LIST,
- "2.1.1" }
-, { "SADD",
- "key member",
- "Add a member to a set",
- COMMAND_GROUP_SET,
- "0.07" }
-, { "SAVE",
+ 2,
+ "2.2.0" },
+ { "SADD",
+ "key member [member ...]",
+ "Add one or more members to a set",
+ 3,
+ "1.0.0" },
+ { "SAVE",
"-",
"Synchronously save the dataset to disk",
- COMMAND_GROUP_SERVER,
- "0.07" }
-, { "SCARD",
+ 9,
+ "1.0.0" },
+ { "SCARD",
"key",
"Get the number of members in a set",
- COMMAND_GROUP_SET,
- "0.07" }
-, { "SDIFF",
+ 3,
+ "1.0.0" },
+ { "SCRIPT EXISTS",
+ "script [script ...]",
+ "Check existence of scripts in the script cache.",
+ 10,
+ "2.6.0" },
+ { "SCRIPT FLUSH",
+ "-",
+ "Remove all the scripts from the script cache.",
+ 10,
+ "2.6.0" },
+ { "SCRIPT KILL",
+ "-",
+ "Kill the script currently in execution.",
+ 10,
+ "2.6.0" },
+ { "SCRIPT LOAD",
+ "script",
+ "Load the specified Lua script into the script cache.",
+ 10,
+ "2.6.0" },
+ { "SDIFF",
"key [key ...]",
"Subtract multiple sets",
- COMMAND_GROUP_SET,
- "0.100" }
-, { "SDIFFSTORE",
+ 3,
+ "1.0.0" },
+ { "SDIFFSTORE",
"destination key [key ...]",
"Subtract multiple sets and store the resulting set in a key",
- COMMAND_GROUP_SET,
- "0.100" }
-, { "SELECT",
+ 3,
+ "1.0.0" },
+ { "SELECT",
"index",
"Change the selected database for the current connection",
- COMMAND_GROUP_CONNECTION,
- "0.07" }
-, { "SET",
+ 8,
+ "1.0.0" },
+ { "SET",
"key value",
"Set the string value of a key",
- COMMAND_GROUP_STRING,
- "0.07" }
-, { "SETEX",
- "key timestamp value",
+ 1,
+ "1.0.0" },
+ { "SETBIT",
+ "key offset value",
+ "Sets or clears the bit at offset in the string value stored at key",
+ 1,
+ "2.2.0" },
+ { "SETEX",
+ "key seconds value",
"Set the value and expiration of a key",
- COMMAND_GROUP_STRING,
- "1.3.10" }
-, { "SETNX",
+ 1,
+ "2.0.0" },
+ { "SETNX",
"key value",
"Set the value of a key, only if the key does not exist",
- COMMAND_GROUP_STRING,
- "0.07" }
-, { "SHUTDOWN",
- "-",
+ 1,
+ "1.0.0" },
+ { "SETRANGE",
+ "key offset value",
+ "Overwrite part of a string at key starting at the specified offset",
+ 1,
+ "2.2.0" },
+ { "SHUTDOWN",
+ "[NOSAVE] [SAVE]",
"Synchronously save the dataset to disk and then shut down the server",
- COMMAND_GROUP_SERVER,
- "0.07" }
-, { "SINTER",
+ 9,
+ "1.0.0" },
+ { "SINTER",
"key [key ...]",
"Intersect multiple sets",
- COMMAND_GROUP_SET,
- "0.07" }
-, { "SINTERSTORE",
+ 3,
+ "1.0.0" },
+ { "SINTERSTORE",
"destination key [key ...]",
"Intersect multiple sets and store the resulting set in a key",
- COMMAND_GROUP_SET,
- "0.07" }
-, { "SISMEMBER",
+ 3,
+ "1.0.0" },
+ { "SISMEMBER",
"key member",
"Determine if a given value is a member of a set",
- COMMAND_GROUP_SET,
- "0.07" }
-, { "SLAVEOF",
+ 3,
+ "1.0.0" },
+ { "SLAVEOF",
"host port",
"Make the server a slave of another instance, or promote it as master",
- COMMAND_GROUP_SERVER,
- "0.100" }
-, { "SMEMBERS",
+ 9,
+ "1.0.0" },
+ { "SLOWLOG",
+ "subcommand [argument]",
+ "Manages the Redis slow queries log",
+ 9,
+ "2.2.12" },
+ { "SMEMBERS",
"key",
"Get all the members in a set",
- COMMAND_GROUP_SET,
- "0.07" }
-, { "SMOVE",
+ 3,
+ "1.0.0" },
+ { "SMOVE",
"source destination member",
"Move a member from one set to another",
- COMMAND_GROUP_SET,
- "0.091" }
-, { "SORT",
- "key [BY pattern] [LIMIT start count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination]",
+ 3,
+ "1.0.0" },
+ { "SORT",
+ "key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination]",
"Sort the elements in a list, set or sorted set",
- COMMAND_GROUP_GENERIC,
- "0.07" }
-, { "SPOP",
+ 0,
+ "1.0.0" },
+ { "SPOP",
"key",
"Remove and return a random member from a set",
- COMMAND_GROUP_SET,
- "0.101" }
-, { "SRANDMEMBER",
- "key",
- "Get a random member from a set",
- COMMAND_GROUP_SET,
- "1.001" }
-, { "SREM",
- "key member",
- "Remove a member from a set",
- COMMAND_GROUP_SET,
- "0.07" }
-, { "STRLEN",
+ 3,
+ "1.0.0" },
+ { "SRANDMEMBER",
+ "key [count]",
+ "Get one or multiple random members from a set",
+ 3,
+ "1.0.0" },
+ { "SREM",
+ "key member [member ...]",
+ "Remove one or more members from a set",
+ 3,
+ "1.0.0" },
+ { "STRLEN",
"key",
"Get the length of the value stored in a key",
- COMMAND_GROUP_STRING,
- "2.1.2" }
-, { "SUBSCRIBE",
- "channel",
+ 1,
+ "2.2.0" },
+ { "SUBSCRIBE",
+ "channel [channel ...]",
"Listen for messages published to the given channels",
- COMMAND_GROUP_PUBSUB,
- "1.3.8" }
-, { "SUBSTR",
- "key start stop",
- "Get a substring of the string stored at a key",
- COMMAND_GROUP_STRING,
- "1.3.4" }
-, { "SUNION",
+ 6,
+ "2.0.0" },
+ { "SUNION",
"key [key ...]",
"Add multiple sets",
- COMMAND_GROUP_SET,
- "0.091" }
-, { "SUNIONSTORE",
+ 3,
+ "1.0.0" },
+ { "SUNIONSTORE",
"destination key [key ...]",
"Add multiple sets and store the resulting set in a key",
- COMMAND_GROUP_SET,
- "0.091" }
-, { "SYNC",
+ 3,
+ "1.0.0" },
+ { "SYNC",
"-",
"Internal command used for replication",
- COMMAND_GROUP_SERVER,
- "0.07" }
-, { "TTL",
+ 9,
+ "1.0.0" },
+ { "TIME",
+ "-",
+ "Return the current server time",
+ 9,
+ "2.6.0" },
+ { "TTL",
"key",
"Get the time to live for a key",
- COMMAND_GROUP_GENERIC,
- "0.100" }
-, { "TYPE",
+ 0,
+ "1.0.0" },
+ { "TYPE",
"key",
"Determine the type stored at key",
- COMMAND_GROUP_GENERIC,
- "0.07" }
-, { "UNSUBSCRIBE",
+ 0,
+ "1.0.0" },
+ { "UNSUBSCRIBE",
"[channel [channel ...]]",
"Stop listening for messages posted to the given channels",
- COMMAND_GROUP_PUBSUB,
- "1.3.8" }
-, { "UNWATCH",
+ 6,
+ "2.0.0" },
+ { "UNWATCH",
"-",
"Forget about all watched keys",
- COMMAND_GROUP_TRANSACTIONS,
- "2.1.0" }
-, { "WATCH",
+ 7,
+ "2.2.0" },
+ { "WATCH",
"key [key ...]",
"Watch the given keys to determine execution of the MULTI/EXEC block",
- COMMAND_GROUP_TRANSACTIONS,
- "2.1.0" }
-, { "ZADD",
- "key score member",
- "Add a member to a sorted set, or update its score if it already exists",
- COMMAND_GROUP_SORTED_SET,
- "1.1" }
-, { "ZCARD",
+ 7,
+ "2.2.0" },
+ { "ZADD",
+ "key score member [score] [member]",
+ "Add one or more members to a sorted set, or update its score if it already exists",
+ 4,
+ "1.2.0" },
+ { "ZCARD",
"key",
"Get the number of members in a sorted set",
- COMMAND_GROUP_SORTED_SET,
- "1.1" }
-, { "ZCOUNT",
+ 4,
+ "1.2.0" },
+ { "ZCOUNT",
"key min max",
"Count the members in a sorted set with scores within the given values",
- COMMAND_GROUP_SORTED_SET,
- "1.3.3" }
-, { "ZINCRBY",
+ 4,
+ "2.0.0" },
+ { "ZINCRBY",
"key increment member",
"Increment the score of a member in a sorted set",
- COMMAND_GROUP_SORTED_SET,
- "1.1" }
-, { "ZINTERSTORE",
- "destination key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]",
+ 4,
+ "1.2.0" },
+ { "ZINTERSTORE",
+ "destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]",
"Intersect multiple sorted sets and store the resulting sorted set in a new key",
- COMMAND_GROUP_SORTED_SET,
- "1.3.10" }
-, { "ZRANGE",
- "key start stop",
+ 4,
+ "2.0.0" },
+ { "ZRANGE",
+ "key start stop [WITHSCORES]",
"Return a range of members in a sorted set, by index",
- COMMAND_GROUP_SORTED_SET,
- "1.1" }
-, { "ZRANGEBYSCORE",
- "key min max",
+ 4,
+ "1.2.0" },
+ { "ZRANGEBYSCORE",
+ "key min max [WITHSCORES] [LIMIT offset count]",
"Return a range of members in a sorted set, by score",
- COMMAND_GROUP_SORTED_SET,
- "1.050" }
-, { "ZRANK",
+ 4,
+ "1.0.5" },
+ { "ZRANK",
"key member",
"Determine the index of a member in a sorted set",
- COMMAND_GROUP_SORTED_SET,
- "1.3.4" }
-, { "ZREM",
- "key member",
- "Remove a member from a sorted set",
- COMMAND_GROUP_SORTED_SET,
- "1.1" }
-, { "ZREMRANGEBYRANK",
+ 4,
+ "2.0.0" },
+ { "ZREM",
+ "key member [member ...]",
+ "Remove one or more members from a sorted set",
+ 4,
+ "1.2.0" },
+ { "ZREMRANGEBYRANK",
"key start stop",
"Remove all members in a sorted set within the given indexes",
- COMMAND_GROUP_SORTED_SET,
- "1.3.4" }
-, { "ZREMRANGEBYSCORE",
+ 4,
+ "2.0.0" },
+ { "ZREMRANGEBYSCORE",
"key min max",
"Remove all members in a sorted set within the given scores",
- COMMAND_GROUP_SORTED_SET,
- "1.1" }
-, { "ZREVRANGE",
- "key start stop",
+ 4,
+ "1.2.0" },
+ { "ZREVRANGE",
+ "key start stop [WITHSCORES]",
"Return a range of members in a sorted set, by index, with scores ordered from high to low",
- COMMAND_GROUP_SORTED_SET,
- "1.1" }
-, { "ZREVRANK",
+ 4,
+ "1.2.0" },
+ { "ZREVRANGEBYSCORE",
+ "key max min [WITHSCORES] [LIMIT offset count]",
+ "Return a range of members in a sorted set, by score, with scores ordered from high to low",
+ 4,
+ "2.2.0" },
+ { "ZREVRANK",
"key member",
"Determine the index of a member in a sorted set, with scores ordered from high to low",
- COMMAND_GROUP_SORTED_SET,
- "1.3.4" }
-, { "ZSCORE",
+ 4,
+ "2.0.0" },
+ { "ZSCORE",
"key member",
"Get the score associated with the given member in a sorted set",
- COMMAND_GROUP_SORTED_SET,
- "1.1" }
-, { "ZUNIONSTORE",
- "destination key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]",
+ 4,
+ "1.2.0" },
+ { "ZUNIONSTORE",
+ "destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]",
"Add multiple sorted sets and store the resulting sorted set in a new key",
- COMMAND_GROUP_SORTED_SET,
- "1.3.10" }
-
+ 4,
+ "2.0.0" }
};
-/*
- * Output command help to stdout.
- */
-
-static void
-output_command_help(struct command_help *help) {
- printf("\n \x1b[1m%s\x1b[0m \x1b[90m%s\x1b[0m\n", help->name, help->params);
- printf(" \x1b[33msummary:\x1b[0m %s\n", help->summary);
- printf(" \x1b[33msince:\x1b[0m %s\n", help->since);
- printf(" \x1b[33mgroup:\x1b[0m %s\n", command_group_type_names[help->group]);
-}
-
-/*
- * Return command group type by name string.
- */
-
-static command_group_type_t
-command_group_type_by_name(const char *name) {
- for (int i = 0; i < COMMAND_GROUP_LENGTH; ++i) {
- const char *group = command_group_type_names[i];
- if (0 == strcasecmp(name, group)) return i;
- }
- return 0;
-}
-
-/*
- * Output group names.
- */
-
-static void
-output_group_help() {
- for (int i = 0; i < COMMAND_GROUP_LENGTH; ++i) {
- if (COMMAND_GROUP_UNKNOWN == i) continue;
- const char *group = command_group_type_names[i];
- printf(" \x1b[90m-\x1b[0m %s\n", group);
- }
-}
-
-/*
- * Output all command help, filtering by group or command name.
- */
-
-static void
-output_help(int argc, const char **argv) {
- int len = sizeof(command_help) / sizeof(struct command_help);
-
- if (argc && 0 == strcasecmp("groups", argv[0])) {
- output_group_help();
- return;
- }
-
- command_group_type_t group = argc
- ? command_group_type_by_name(argv[0])
- : COMMAND_GROUP_UNKNOWN;
-
- for (int i = 0; i < len; ++i) {
- struct command_help help = command_help[i];
- if (argc && !group && 0 != strcasecmp(help.name, argv[0])) continue;
- if (group && group != help.group) continue;
- output_command_help(&help);
- }
- puts("");
-}
+#endif