Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
hanoi2005
redis
提交
a2a69d58
R
redis
项目概览
hanoi2005
/
redis
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
redis
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a2a69d58
编写于
11月 28, 2010
作者:
P
Pieter Noordhuis
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Refactor help-related code into redis-cli.c
上级
50d0e82d
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
482 addition
and
583 deletion
+482
-583
src/help.h
src/help.h
+365
-458
src/redis-cli.c
src/redis-cli.c
+60
-1
utils/generate-command-help.rb
utils/generate-command-help.rb
+57
-5
utils/help.h
utils/help.h
+0
-119
未找到文件。
src/help.h
浏览文件 @
a2a69d58
/* 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"
};
/*
* Command help struct.
*/
struct
command_help
{
struct
commandHelp
{
char
*
name
;
char
*
params
;
char
*
summary
;
command_group_type_
t
group
;
in
t
group
;
char
*
since
;
}
command
_h
elp
[]
=
{
}
command
H
elp
[]
=
{
{
"APPEND"
,
"key value"
,
"Append a value to a key"
,
COMMAND_GROUP_STRING
,
"1.3.3"
}
,
{
"AUTH"
,
1
,
"1.3.3"
}
,
{
"AUTH"
,
"password"
,
"Authenticate to the server"
,
COMMAND_GROUP_CONNECTION
,
"0.08"
}
,
{
"BGREWRITEAOF"
,
8
,
"0.08"
}
,
{
"BGREWRITEAOF"
,
"-"
,
"Asynchronously rewrite the append-only file"
,
COMMAND_GROUP_SERVER
,
"1.07"
}
,
{
"BGSAVE"
,
9
,
"1.07"
}
,
{
"BGSAVE"
,
"-"
,
"Asynchronously save the dataset to disk"
,
COMMAND_GROUP_SERVER
,
"0.07"
}
,
{
"BLPOP"
,
9
,
"0.07"
}
,
{
"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
,
"1.3.1"
}
,
{
"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
,
"1.3.1"
}
,
{
"CONFIG GET"
,
"parameter"
,
"Get the value of a configuration parameter"
,
COMMAND_GROUP_SERVER
,
"2.0"
}
,
{
"CONFIG SET"
,
9
,
"2.0"
}
,
{
"CONFIG SET"
,
"parameter value"
,
"Set a configuration parameter to the given value"
,
COMMAND_GROUP_SERVER
,
"2.0"
}
,
{
"DBSIZE"
,
9
,
"2.0"
}
,
{
"DBSIZE"
,
"-"
,
"Return the number of keys in the selected database"
,
COMMAND_GROUP_SERVER
,
"0.07"
}
,
{
"DEBUG OBJECT"
,
9
,
"0.07"
}
,
{
"DEBUG OBJECT"
,
"key"
,
"Get debugging information about a key"
,
COMMAND_GROUP_SERVER
,
"0.101"
}
,
{
"DEBUG SEGFAULT"
,
9
,
"0.101"
}
,
{
"DEBUG SEGFAULT"
,
"-"
,
"Make the server crash"
,
COMMAND_GROUP_SERVER
,
"0.101"
}
,
{
"DECR"
,
9
,
"0.101"
}
,
{
"DECR"
,
"key decrement"
,
"Decrement the integer value of a key by one"
,
COMMAND_GROUP_STRING
,
"0.07"
}
,
{
"DECRBY"
,
1
,
"0.07"
}
,
{
"DECRBY"
,
"key decrement"
,
"Decrement the integer value of a key by the given number"
,
COMMAND_GROUP_STRING
,
"0.07"
}
,
{
"DEL"
,
1
,
"0.07"
}
,
{
"DEL"
,
"key [key ...]"
,
"Delete a key"
,
COMMAND_GROUP_GENERIC
,
"0.07"
}
,
{
"DISCARD"
,
0
,
"0.07"
}
,
{
"DISCARD"
,
"-"
,
"Discard all commands issued after MULTI"
,
COMMAND_GROUP_TRANSACTIONS
,
"1.3.3"
}
,
{
"ECHO"
,
7
,
"1.3.3"
}
,
{
"ECHO"
,
"message"
,
"Echo the given string"
,
COMMAND_GROUP_CONNECTION
,
"0.07"
}
,
{
"EXEC"
,
8
,
"0.07"
}
,
{
"EXEC"
,
"-"
,
"Execute all commands issued after MULTI"
,
COMMAND_GROUP_TRANSACTIONS
,
"1.1.95"
}
,
{
"EXISTS"
,
7
,
"1.1.95"
}
,
{
"EXISTS"
,
"key"
,
"Determine if a key exists"
,
COMMAND_GROUP_SERVER
,
"0.07"
}
,
{
"EXPIRE"
,
9
,
"0.07"
}
,
{
"EXPIRE"
,
"key seconds"
,
"Set a key's time to live in seconds"
,
COMMAND_GROUP_GENERIC
,
"0.09"
}
,
{
"EXPIREAT"
,
0
,
"0.09"
}
,
{
"EXPIREAT"
,
"key timestamp"
,
"Set the expiration for a key as a UNIX timestamp"
,
COMMAND_GROUP_GENERIC
,
"1.1"
}
,
{
"FLUSHALL"
,
0
,
"1.1"
}
,
{
"FLUSHALL"
,
"-"
,
"Remove all keys from all databases"
,
COMMAND_GROUP_SERVER
,
"0.07"
}
,
{
"FLUSHDB"
,
9
,
"0.07"
}
,
{
"FLUSHDB"
,
"-"
,
"Remove all keys from the current database"
,
COMMAND_GROUP_SERVER
,
"0.07"
}
,
{
"GET"
,
9
,
"0.07"
}
,
{
"GET"
,
"key"
,
"Get the value of a key"
,
COMMAND_GROUP_STRING
,
"0.07"
}
,
{
"GETSET"
,
1
,
"0.07"
}
,
{
"GETSET"
,
"key value"
,
"Set the string value of a key and return its old value"
,
COMMAND_GROUP_STRING
,
"0.091"
}
,
{
"HDEL"
,
1
,
"0.091"
}
,
{
"HDEL"
,
"key field"
,
"Delete a hash field"
,
COMMAND_GROUP_HASH
,
"1.3.10"
}
,
{
"HEXISTS"
,
5
,
"1.3.10"
}
,
{
"HEXISTS"
,
"key field"
,
"Determine if a hash field exists"
,
COMMAND_GROUP_HASH
,
"1.3.10"
}
,
{
"HGET"
,
5
,
"1.3.10"
}
,
{
"HGET"
,
"key field"
,
"Get the value of a hash field"
,
COMMAND_GROUP_HASH
,
"1.3.10"
}
,
{
"HGETALL"
,
5
,
"1.3.10"
}
,
{
"HGETALL"
,
"key"
,
"Get all the fields and values in a hash"
,
COMMAND_GROUP_HASH
,
"1.3.10"
}
,
{
"HINCRBY"
,
5
,
"1.3.10"
}
,
{
"HINCRBY"
,
"key field increment"
,
"Increment the integer value of a hash field by the given number"
,
COMMAND_GROUP_HASH
,
"1.3.10"
}
,
{
"HKEYS"
,
5
,
"1.3.10"
}
,
{
"HKEYS"
,
"key"
,
"Get all the fields in a hash"
,
COMMAND_GROUP_HASH
,
"1.3.10"
}
,
{
"HLEN"
,
5
,
"1.3.10"
}
,
{
"HLEN"
,
"key"
,
"Get the number of fields in a hash"
,
COMMAND_GROUP_HASH
,
"1.3.10"
}
,
{
"HMGET"
,
5
,
"1.3.10"
}
,
{
"HMGET"
,
"key field [field ...]"
,
"Get the values of all the given hash fields"
,
COMMAND_GROUP_HASH
,
"1.3.10"
}
,
{
"HMSET"
,
5
,
"1.3.10"
}
,
{
"HMSET"
,
"key field value [field value ...]"
,
"Set multiple hash fields to multiple values"
,
COMMAND_GROUP_HASH
,
"1.3.8"
}
,
{
"HSET"
,
5
,
"1.3.8"
}
,
{
"HSET"
,
"key field value"
,
"Set the string value of a hash field"
,
COMMAND_GROUP_HASH
,
"1.3.10"
}
,
{
"HSETNX"
,
5
,
"1.3.10"
}
,
{
"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
,
"1.3.8"
}
,
{
"HVALS"
,
"key"
,
"Get all the values in a hash"
,
COMMAND_GROUP_HASH
,
"1.3.10"
}
,
{
"INCR"
,
5
,
"1.3.10"
}
,
{
"INCR"
,
"key"
,
"Increment the integer value of a key by one"
,
COMMAND_GROUP_STRING
,
"0.07"
}
,
{
"INCRBY"
,
1
,
"0.07"
}
,
{
"INCRBY"
,
"key increment"
,
"Increment the integer value of a key by the given number"
,
COMMAND_GROUP_STRING
,
"0.07"
}
,
{
"INFO"
,
1
,
"0.07"
}
,
{
"INFO"
,
"-"
,
"Get information and statistics about the server"
,
COMMAND_GROUP_SERVER
,
"0.07"
}
,
{
"KEYS"
,
9
,
"0.07"
}
,
{
"KEYS"
,
"pattern"
,
"Find all keys matching the given pattern"
,
COMMAND_GROUP_GENERIC
,
"0.07"
}
,
{
"LASTSAVE"
,
0
,
"0.07"
}
,
{
"LASTSAVE"
,
"-"
,
"Get the UNIX time stamp of the last successful save to disk"
,
COMMAND_GROUP_SERVER
,
"0.07"
}
,
{
"LINDEX"
,
9
,
"0.07"
}
,
{
"LINDEX"
,
"key index"
,
"Get an element from a list by its index"
,
COMMAND_GROUP_LIST
,
"0.07"
}
,
{
"LINSERT"
,
2
,
"0.07"
}
,
{
"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.1.1"
}
,
{
"LLEN"
,
"key"
,
"Get the length of a list"
,
COMMAND_GROUP_LIST
,
"0.07"
}
,
{
"LPOP"
,
2
,
"0.07"
}
,
{
"LPOP"
,
"key"
,
"Remove and get the first element in a list"
,
COMMAND_GROUP_LIST
,
"0.07"
}
,
{
"LPUSH"
,
2
,
"0.07"
}
,
{
"LPUSH"
,
"key value"
,
"Prepend a value to a list"
,
COMMAND_GROUP_LIST
,
"0.07"
}
,
{
"LPUSHX"
,
2
,
"0.07"
}
,
{
"LPUSHX"
,
"key value"
,
"Prepend a value to a list, only if the list exists"
,
COMMAND_GROUP_LIST
,
"2.1.1"
}
,
{
"LRANGE"
,
2
,
"2.1.1"
}
,
{
"LRANGE"
,
"key start stop"
,
"Get a range of elements from a list"
,
COMMAND_GROUP_LIST
,
"0.07"
}
,
{
"LREM"
,
2
,
"0.07"
}
,
{
"LREM"
,
"key count value"
,
"Remove elements from a list"
,
COMMAND_GROUP_LIST
,
"0.07"
}
,
{
"LSET"
,
2
,
"0.07"
}
,
{
"LSET"
,
"key index value"
,
"Set the value of an element in a list by its index"
,
COMMAND_GROUP_LIST
,
"0.07"
}
,
{
"LTRIM"
,
2
,
"0.07"
}
,
{
"LTRIM"
,
"key start stop"
,
"Trim a list to the specified range"
,
COMMAND_GROUP_LIST
,
"0.07"
}
,
{
"MGET"
,
2
,
"0.07"
}
,
{
"MGET"
,
"key [key ...]"
,
"Get the values of all the given keys"
,
COMMAND_GROUP_STRING
,
"0.07"
}
,
{
"MONITOR"
,
1
,
"0.07"
}
,
{
"MONITOR"
,
"-"
,
"Listen for all requests received by the server in real time"
,
COMMAND_GROUP_SERVER
,
"0.07"
}
,
{
"MOVE"
,
9
,
"0.07"
}
,
{
"MOVE"
,
"key db"
,
"Move a key to another database"
,
COMMAND_GROUP_GENERIC
,
"0.07"
}
,
{
"MSET"
,
0
,
"0.07"
}
,
{
"MSET"
,
"key value [key value ...]"
,
"Set multiple keys to multiple values"
,
COMMAND_GROUP_STRING
,
"1.001"
}
,
{
"MSETNX"
,
1
,
"1.001"
}
,
{
"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.001"
}
,
{
"MULTI"
,
"-"
,
"Mark the start of a transaction block"
,
COMMAND_GROUP_TRANSACTIONS
,
"1.1.95"
}
,
{
"PERSIST"
,
7
,
"1.1.95"
}
,
{
"PERSIST"
,
"key"
,
"Remove the expiration from a key"
,
COMMAND_GROUP_GENERIC
,
"2.1.2"
}
,
{
"PING"
,
0
,
"2.1.2"
}
,
{
"PING"
,
"-"
,
"Ping the server"
,
COMMAND_GROUP_CONNECTION
,
"0.07"
}
,
{
"PSUBSCRIBE"
,
8
,
"0.07"
}
,
{
"PSUBSCRIBE"
,
"pattern"
,
"Listen for messages published to channels matching the given patterns"
,
COMMAND_GROUP_PUBSUB
,
"1.3.8"
}
,
{
"PUBLISH"
,
6
,
"1.3.8"
}
,
{
"PUBLISH"
,
"channel message"
,
"Post a message to a channel"
,
COMMAND_GROUP_PUBSUB
,
"1.3.8"
}
,
{
"PUNSUBSCRIBE"
,
6
,
"1.3.8"
}
,
{
"PUNSUBSCRIBE"
,
"[pattern [pattern ...]]"
,
"Stop listening for messages posted to channels matching the given patterns"
,
COMMAND_GROUP_PUBSUB
,
"1.3.8"
}
,
{
"QUIT"
,
6
,
"1.3.8"
}
,
{
"QUIT"
,
"-"
,
"Close the connection"
,
COMMAND_GROUP_CONNECTION
,
"0.07"
}
,
{
"RANDOMKEY"
,
8
,
"0.07"
}
,
{
"RANDOMKEY"
,
"-"
,
"Return a random key from the keyspace"
,
COMMAND_GROUP_GENERIC
,
"0.07"
}
,
{
"RENAME"
,
0
,
"0.07"
}
,
{
"RENAME"
,
"old new"
,
"Rename a key"
,
COMMAND_GROUP_GENERIC
,
"0.07"
}
,
{
"RENAMENX"
,
0
,
"0.07"
}
,
{
"RENAMENX"
,
"old new"
,
"Rename a key, only if the new key does not exist"
,
COMMAND_GROUP_GENERIC
,
"0.07"
}
,
{
"RPOP"
,
0
,
"0.07"
}
,
{
"RPOP"
,
"key"
,
"Remove and get the last element in a list"
,
COMMAND_GROUP_LIST
,
"0.07"
}
,
{
"RPOPLPUSH"
,
2
,
"0.07"
}
,
{
"RPOPLPUSH"
,
"source destination"
,
"Remove the last element in a list, append it to another list and return it"
,
COMMAND_GROUP_LIST
,
"1.1"
}
,
{
"RPUSH"
,
2
,
"1.1"
}
,
{
"RPUSH"
,
"key value"
,
"Append a value to a list"
,
COMMAND_GROUP_LIST
,
"0.07"
}
,
{
"RPUSHX"
,
2
,
"0.07"
}
,
{
"RPUSHX"
,
"key value"
,
"Append a value to a list, only if the list exists"
,
COMMAND_GROUP_LIST
,
"2.1.1"
}
,
{
"SADD"
,
2
,
"2.1.1"
}
,
{
"SADD"
,
"key member"
,
"Add a member to a set"
,
COMMAND_GROUP_SET
,
"0.07"
}
,
{
"SAVE"
,
3
,
"0.07"
}
,
{
"SAVE"
,
"-"
,
"Synchronously save the dataset to disk"
,
COMMAND_GROUP_SERVER
,
"0.07"
}
,
{
"SCARD"
,
9
,
"0.07"
}
,
{
"SCARD"
,
"key"
,
"Get the number of members in a set"
,
COMMAND_GROUP_SET
,
"0.07"
}
,
{
"SDIFF"
,
3
,
"0.07"
}
,
{
"SDIFF"
,
"key [key ...]"
,
"Subtract multiple sets"
,
COMMAND_GROUP_SET
,
"0.100"
}
,
{
"SDIFFSTORE"
,
3
,
"0.100"
}
,
{
"SDIFFSTORE"
,
"destination key [key ...]"
,
"Subtract multiple sets and store the resulting set in a key"
,
COMMAND_GROUP_SET
,
"0.100"
}
,
{
"SELECT"
,
3
,
"0.100"
}
,
{
"SELECT"
,
"index"
,
"Change the selected database for the current connection"
,
COMMAND_GROUP_CONNECTION
,
"0.07"
}
,
{
"SET"
,
8
,
"0.07"
}
,
{
"SET"
,
"key value"
,
"Set the string value of a key"
,
COMMAND_GROUP_STRING
,
"0.07"
}
,
{
"SETEX"
,
1
,
"0.07"
}
,
{
"SETEX"
,
"key timestamp value"
,
"Set the value and expiration of a key"
,
COMMAND_GROUP_STRING
,
"1.3.10"
}
,
{
"SETNX"
,
1
,
"1.3.10"
}
,
{
"SETNX"
,
"key value"
,
"Set the value of a key, only if the key does not exist"
,
COMMAND_GROUP_STRING
,
"0.07"
}
,
{
"SHUTDOWN"
,
1
,
"0.07"
}
,
{
"SHUTDOWN"
,
"-"
,
"Synchronously save the dataset to disk and then shut down the server"
,
COMMAND_GROUP_SERVER
,
"0.07"
}
,
{
"SINTER"
,
9
,
"0.07"
}
,
{
"SINTER"
,
"key [key ...]"
,
"Intersect multiple sets"
,
COMMAND_GROUP_SET
,
"0.07"
}
,
{
"SINTERSTORE"
,
3
,
"0.07"
}
,
{
"SINTERSTORE"
,
"destination key [key ...]"
,
"Intersect multiple sets and store the resulting set in a key"
,
COMMAND_GROUP_SET
,
"0.07"
}
,
{
"SISMEMBER"
,
3
,
"0.07"
}
,
{
"SISMEMBER"
,
"key member"
,
"Determine if a given value is a member of a set"
,
COMMAND_GROUP_SET
,
"0.07"
}
,
{
"SLAVEOF"
,
3
,
"0.07"
}
,
{
"SLAVEOF"
,
"host port"
,
"Make the server a slave of another instance, or promote it as master"
,
COMMAND_GROUP_SERVER
,
"0.100"
}
,
{
"SMEMBERS"
,
9
,
"0.100"
}
,
{
"SMEMBERS"
,
"key"
,
"Get all the members in a set"
,
COMMAND_GROUP_SET
,
"0.07"
}
,
{
"SMOVE"
,
3
,
"0.07"
}
,
{
"SMOVE"
,
"source destination member"
,
"Move a member from one set to another"
,
COMMAND_GROUP_SET
,
"0.091"
}
,
{
"SORT"
,
3
,
"0.091"
}
,
{
"SORT"
,
"key [BY pattern] [LIMIT start 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
,
"0.07"
}
,
{
"SPOP"
,
"key"
,
"Remove and return a random member from a set"
,
COMMAND_GROUP_SET
,
"0.101"
}
,
{
"SRANDMEMBER"
,
3
,
"0.101"
}
,
{
"SRANDMEMBER"
,
"key"
,
"Get a random member from a set"
,
COMMAND_GROUP_SET
,
"1.001"
}
,
{
"SREM"
,
3
,
"1.001"
}
,
{
"SREM"
,
"key member"
,
"Remove a member from a set"
,
COMMAND_GROUP_SET
,
"0.07"
}
,
{
"STRLEN"
,
3
,
"0.07"
}
,
{
"STRLEN"
,
"key"
,
"Get the length of the value stored in a key"
,
COMMAND_GROUP_STRING
,
"2.1.2"
}
,
{
"SUBSCRIBE"
,
1
,
"2.1.2"
}
,
{
"SUBSCRIBE"
,
"channel"
,
"Listen for messages published to the given channels"
,
COMMAND_GROUP_PUBSUB
,
"1.3.8"
}
,
{
"SUBSTR"
,
6
,
"1.3.8"
}
,
{
"SUBSTR"
,
"key start stop"
,
"Get a substring of the string stored at a key"
,
COMMAND_GROUP_STRING
,
"1.3.4"
}
,
{
"SUNION"
,
1
,
"1.3.4"
}
,
{
"SUNION"
,
"key [key ...]"
,
"Add multiple sets"
,
COMMAND_GROUP_SET
,
"0.091"
}
,
{
"SUNIONSTORE"
,
3
,
"0.091"
}
,
{
"SUNIONSTORE"
,
"destination key [key ...]"
,
"Add multiple sets and store the resulting set in a key"
,
COMMAND_GROUP_SET
,
"0.091"
}
,
{
"SYNC"
,
3
,
"0.091"
}
,
{
"SYNC"
,
"-"
,
"Internal command used for replication"
,
COMMAND_GROUP_SERVER
,
"0.07"
}
,
{
"TTL"
,
9
,
"0.07"
}
,
{
"TTL"
,
"key"
,
"Get the time to live for a key"
,
COMMAND_GROUP_GENERIC
,
"0.100"
}
,
{
"TYPE"
,
0
,
"0.100"
}
,
{
"TYPE"
,
"key"
,
"Determine the type stored at key"
,
COMMAND_GROUP_GENERIC
,
"0.07"
}
,
{
"UNSUBSCRIBE"
,
0
,
"0.07"
}
,
{
"UNSUBSCRIBE"
,
"[channel [channel ...]]"
,
"Stop listening for messages posted to the given channels"
,
COMMAND_GROUP_PUBSUB
,
"1.3.8"
}
,
{
"UNWATCH"
,
6
,
"1.3.8"
}
,
{
"UNWATCH"
,
"-"
,
"Forget about all watched keys"
,
COMMAND_GROUP_TRANSACTIONS
,
"2.1.0"
}
,
{
"WATCH"
,
7
,
"2.1.0"
}
,
{
"WATCH"
,
"key [key ...]"
,
"Watch the given keys to determine execution of the MULTI/EXEC block"
,
COMMAND_GROUP_TRANSACTIONS
,
"2.1.0"
}
,
{
"ZADD"
,
7
,
"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"
,
4
,
"1.1"
}
,
{
"ZCARD"
,
"key"
,
"Get the number of members in a sorted set"
,
COMMAND_GROUP_SORTED_SET
,
"1.1"
}
,
{
"ZCOUNT"
,
4
,
"1.1"
}
,
{
"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
,
"1.3.3"
}
,
{
"ZINCRBY"
,
"key increment member"
,
"Increment the score of a member in a sorted set"
,
COMMAND_GROUP_SORTED_SET
,
"1.1"
}
,
{
"ZINTERSTORE"
,
4
,
"1.1"
}
,
{
"ZINTERSTORE"
,
"destination 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"
,
4
,
"1.3.10"
}
,
{
"ZRANGE"
,
"key start stop"
,
"Return a range of members in a sorted set, by index"
,
COMMAND_GROUP_SORTED_SET
,
"1.1"
}
,
{
"ZRANGEBYSCORE"
,
4
,
"1.1"
}
,
{
"ZRANGEBYSCORE"
,
"key min max"
,
"Return a range of members in a sorted set, by score"
,
COMMAND_GROUP_SORTED_SET
,
"1.050"
}
,
{
"ZRANK"
,
4
,
"1.050"
}
,
{
"ZRANK"
,
"key member"
,
"Determine the index of a member in a sorted set"
,
COMMAND_GROUP_SORTED_SET
,
"1.3.4"
}
,
{
"ZREM"
,
4
,
"1.3.4"
}
,
{
"ZREM"
,
"key member"
,
"Remove a member from a sorted set"
,
COMMAND_GROUP_SORTED_SET
,
"1.1"
}
,
{
"ZREMRANGEBYRANK"
,
4
,
"1.1"
}
,
{
"ZREMRANGEBYRANK"
,
"key start stop"
,
"Remove all members in a sorted set within the given indexes"
,
COMMAND_GROUP_SORTED_SET
,
"1.3.4"
}
,
{
"ZREMRANGEBYSCORE"
,
4
,
"1.3.4"
}
,
{
"ZREMRANGEBYSCORE"
,
"key min max"
,
"Remove all members in a sorted set within the given scores"
,
COMMAND_GROUP_SORTED_SET
,
"1.1"
}
,
{
"ZREVRANGE"
,
4
,
"1.1"
}
,
{
"ZREVRANGE"
,
"key start stop"
,
"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.1"
}
,
{
"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
,
"1.3.4"
}
,
{
"ZSCORE"
,
"key member"
,
"Get the score associated with the given member in a sorted set"
,
COMMAND_GROUP_SORTED_SET
,
"1.1"
}
,
{
"ZUNIONSTORE"
,
4
,
"1.1"
}
,
{
"ZUNIONSTORE"
,
"destination 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
,
4
,
"1.3.10"
}
};
/*
* 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
src/redis-cli.c
浏览文件 @
a2a69d58
...
...
@@ -84,6 +84,65 @@ static long long mstime(void) {
return
mst
;
}
/*------------------------------------------------------------------------------
* Help functions
*--------------------------------------------------------------------------- */
/* Output command help to stdout. */
static
void
outputCommandHelp
(
struct
commandHelp
*
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
"
,
commandGroups
[
help
->
group
]);
}
/* Return command group type by name string. */
static
int
commandGroupIndex
(
const
char
*
name
)
{
int
i
,
len
=
sizeof
(
commandGroups
)
/
sizeof
(
char
*
);
for
(
i
=
0
;
i
<
len
;
i
++
)
if
(
strcasecmp
(
name
,
commandGroups
[
i
])
==
0
)
return
i
;
return
-
1
;
}
/* Output group names. */
static
void
outputGroupHelp
()
{
int
i
,
len
=
sizeof
(
commandGroups
)
/
sizeof
(
char
*
);
for
(
i
=
0
;
i
<
len
;
i
++
)
printf
(
"
\x1b
[90m-
\x1b
[0m %s
\n
"
,
commandGroups
[
i
]);
}
/* Output all command help, filtering by group or command name. */
static
void
outputHelp
(
int
argc
,
char
**
argv
)
{
int
i
,
len
=
sizeof
(
commandHelp
)
/
sizeof
(
struct
commandHelp
);
int
group
;
struct
commandHelp
*
help
;
if
(
argc
&&
strcasecmp
(
"groups"
,
argv
[
0
])
==
0
)
{
outputGroupHelp
();
return
;
}
group
=
argc
?
commandGroupIndex
(
argv
[
0
])
:
-
1
;
for
(
i
=
0
;
i
<
len
;
i
++
)
{
help
=
&
commandHelp
[
i
];
if
(
group
==
-
1
)
{
if
(
argc
)
{
if
(
strcasecmp
(
help
->
name
,
argv
[
0
])
==
0
)
{
outputCommandHelp
(
help
);
}
}
else
{
outputCommandHelp
(
help
);
}
}
else
{
if
(
group
==
help
->
group
)
{
outputCommandHelp
(
help
);
}
}
}
puts
(
""
);
}
/*------------------------------------------------------------------------------
* Networking / parsing
*--------------------------------------------------------------------------- */
...
...
@@ -260,7 +319,7 @@ static int cliSendCommand(int argc, char **argv, int repeat) {
config
.
raw_output
=
!
strcasecmp
(
command
,
"info"
);
if
(
!
strcasecmp
(
command
,
"help"
))
{
output
_h
elp
(
--
argc
,
++
argv
);
output
H
elp
(
--
argc
,
++
argv
);
return
REDIS_OK
;
}
if
(
!
strcasecmp
(
command
,
"shutdown"
))
config
.
shutdown
=
1
;
...
...
utils/generate-command-help.rb
浏览文件 @
a2a69d58
#!/usr/bin/env ruby
GROUPS
=
[
"generic"
,
"string"
,
"list"
,
"set"
,
"sorted_set"
,
"hash"
,
"pubsub"
,
"transactions"
,
"connection"
,
"server"
].
freeze
GROUPS_BY_NAME
=
Hash
[
*
GROUPS
.
each_with_index
.
map
do
|
n
,
i
|
[
n
,
i
]
end
.
flatten
].
freeze
def
argument
arg
name
=
arg
[
"name"
].
is_a?
(
Array
)
?
arg
[
"name"
].
join
(
" "
)
:
arg
[
"name"
]
name
=
arg
[
"enum"
].
join
"|"
if
"enum"
==
arg
[
"type"
]
...
...
@@ -39,21 +58,54 @@ def commands
end
end
def
generate_groups
GROUPS
.
map
do
|
n
|
"
\"
#{
n
}
\"
"
end
.
join
(
",
\n
"
);
end
def
generate_commands
commands
.
to_a
.
sort
do
|
x
,
y
|
x
[
0
]
<=>
y
[
0
]
end
.
map
do
|
key
,
command
|
<<-
SPEC
group
=
GROUPS_BY_NAME
[
command
[
"group"
]]
if
group
.
nil?
STDERR
.
puts
"Please update groups array in
#{
__FILE__
}
"
raise
"Unknown group
#{
command
[
"group"
]
}
"
end
ret
=
<<-
SPEC
{ "
#{
key
}
",
"
#{
arguments
(
command
)
}
",
"
#{
command
[
"summary"
]
}
",
COMMAND_GROUP_
#{
command
[
"group"
].
upcase
}
,
#{
group
}
,
"
#{
command
[
"since"
]
}
" }
SPEC
end
.
join
(
", "
)
ret
.
strip
end
.
join
(
",
\n
"
)
end
# Write to stdout
tmpl
=
File
.
read
"./utils/help.h"
puts
"
\n
// Auto-generated, do not edit.
\n
"
+
tmpl
.
sub
(
"__COMMANDS__"
,
generate_commands
)
puts
<<-
HELP_H
/* Automatically generated by
#{
__FILE__
}
, do not edit. */
#ifndef __REDIS_HELP_H
#define __REDIS_HELP_H
static char *commandGroups[] = {
#{
generate_groups
}
};
struct commandHelp {
char *name;
char *params;
char *summary;
int group;
char *since;
} commandHelp[] = {
#{
generate_commands
}
};
#endif
HELP_H
utils/help.h
已删除
100644 → 0
浏览文件 @
50d0e82d
#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
};
/*
* Command help struct.
*/
struct
command_help
{
char
*
name
;
char
*
params
;
char
*
summary
;
command_group_type_t
group
;
char
*
since
;
}
command_help
[]
=
{
__COMMANDS__
};
/*
* 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
(
""
);
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录