-/* Automatically generated by generate-command-help.rb, do not edit. */
+/* Automatically generated by utils/generate-command-help.rb, do not edit. */
#ifndef __REDIS_HELP_H
#define __REDIS_HELP_H
"pubsub",
"transactions",
"connection",
- "server"
+ "server",
+ "scripting"
};
struct commandHelp {
"key value",
"Append a value to a key",
1,
- "1.3.3" },
+ "2.0.0" },
{ "AUTH",
"password",
"Authenticate to the server",
8,
- "0.08" },
+ "1.0.0" },
{ "BGREWRITEAOF",
"-",
"Asynchronously rewrite the append-only file",
9,
- "1.07" },
+ "1.0.0" },
{ "BGSAVE",
"-",
"Asynchronously save the dataset to disk",
9,
- "0.07" },
+ "1.0.0" },
{ "BLPOP",
"key [key ...] timeout",
"Remove and get the first element in a list, or block until one is available",
2,
- "1.3.1" },
+ "2.0.0" },
{ "BRPOP",
"key [key ...] timeout",
"Remove and get the last element in a list, or block until one is available",
2,
- "1.3.1" },
+ "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.1.7" },
+ "2.2.0" },
{ "CONFIG GET",
"parameter",
"Get the value of a configuration parameter",
9,
- "2.0" },
+ "2.0.0" },
{ "CONFIG RESETSTAT",
"-",
"Reset the stats returned by INFO",
9,
- "2.0" },
+ "2.0.0" },
{ "CONFIG SET",
"parameter value",
"Set a configuration parameter to the given value",
9,
- "2.0" },
+ "2.0.0" },
{ "DBSIZE",
"-",
"Return the number of keys in the selected database",
9,
- "0.07" },
+ "1.0.0" },
{ "DEBUG OBJECT",
"key",
"Get debugging information about a key",
9,
- "0.101" },
+ "1.0.0" },
{ "DEBUG SEGFAULT",
"-",
"Make the server crash",
9,
- "0.101" },
+ "1.0.0" },
{ "DECR",
"key",
"Decrement the integer value of a key by one",
1,
- "0.07" },
+ "1.0.0" },
{ "DECRBY",
"key decrement",
"Decrement the integer value of a key by the given number",
1,
- "0.07" },
+ "1.0.0" },
{ "DEL",
"key [key ...]",
"Delete a key",
0,
- "0.07" },
+ "1.0.0" },
{ "DISCARD",
"-",
"Discard all commands issued after MULTI",
7,
- "1.3.3" },
+ "2.0.0" },
+ { "DUMP",
+ "key",
+ "Return a serialized verison of the value stored at the specified key.",
+ 0,
+ "2.6.0" },
{ "ECHO",
"message",
"Echo the given string",
8,
- "0.07" },
+ "1.0.0" },
+ { "EVAL",
+ "script numkeys key [key ...] arg [arg ...]",
+ "Execute a Lua script server side",
+ 10,
+ "2.6.0" },
{ "EXEC",
"-",
"Execute all commands issued after MULTI",
7,
- "1.1.95" },
+ "1.2.0" },
{ "EXISTS",
"key",
"Determine if a key exists",
- 9,
- "0.07" },
+ 0,
+ "1.0.0" },
{ "EXPIRE",
"key seconds",
"Set a key's time to live in seconds",
0,
- "0.09" },
+ "1.0.0" },
{ "EXPIREAT",
"key timestamp",
"Set the expiration for a key as a UNIX timestamp",
0,
- "1.1" },
+ "1.2.0" },
{ "FLUSHALL",
"-",
"Remove all keys from all databases",
9,
- "0.07" },
+ "1.0.0" },
{ "FLUSHDB",
"-",
"Remove all keys from the current database",
9,
- "0.07" },
+ "1.0.0" },
{ "GET",
"key",
"Get the value of a key",
1,
- "0.07" },
+ "1.0.0" },
{ "GETBIT",
"key offset",
"Returns the bit value at offset in the string value stored at key",
1,
- "2.1.8" },
+ "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",
1,
- "0.091" },
+ "1.0.0" },
{ "HDEL",
- "key field",
- "Delete a hash field",
+ "key field [field ...]",
+ "Delete one or more hash fields",
5,
- "1.3.10" },
+ "2.0.0" },
{ "HEXISTS",
"key field",
"Determine if a hash field exists",
5,
- "1.3.10" },
+ "2.0.0" },
{ "HGET",
"key field",
"Get the value of a hash field",
5,
- "1.3.10" },
+ "2.0.0" },
{ "HGETALL",
"key",
"Get all the fields and values in a hash",
5,
- "1.3.10" },
+ "2.0.0" },
{ "HINCRBY",
"key field increment",
"Increment the integer value of a hash field by the given number",
5,
- "1.3.10" },
+ "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",
5,
- "1.3.10" },
+ "2.0.0" },
{ "HLEN",
"key",
"Get the number of fields in a hash",
5,
- "1.3.10" },
+ "2.0.0" },
{ "HMGET",
"key field [field ...]",
"Get the values of all the given hash fields",
5,
- "1.3.10" },
+ "2.0.0" },
{ "HMSET",
"key field value [field value ...]",
"Set multiple hash fields to multiple values",
5,
- "1.3.8" },
+ "2.0.0" },
{ "HSET",
"key field value",
"Set the string value of a hash field",
5,
- "1.3.10" },
+ "2.0.0" },
{ "HSETNX",
"key field value",
"Set the value of a hash field, only if the field does not exist",
5,
- "1.3.8" },
+ "2.0.0" },
{ "HVALS",
"key",
"Get all the values in a hash",
5,
- "1.3.10" },
+ "2.0.0" },
{ "INCR",
"key",
"Increment the integer value of a key by one",
1,
- "0.07" },
+ "1.0.0" },
{ "INCRBY",
"key increment",
- "Increment the integer value of a key by the given number",
+ "Increment the integer value of a key by the given amount",
1,
- "0.07" },
+ "1.0.0" },
+ { "INCRBYFLOAT",
+ "key increment",
+ "Increment the float value of a key by the given amount",
+ 1,
+ "2.6.0" },
{ "INFO",
"-",
"Get information and statistics about the server",
9,
- "0.07" },
+ "1.0.0" },
{ "KEYS",
"pattern",
"Find all keys matching the given pattern",
0,
- "0.07" },
+ "1.0.0" },
{ "LASTSAVE",
"-",
"Get the UNIX time stamp of the last successful save to disk",
9,
- "0.07" },
+ "1.0.0" },
{ "LINDEX",
"key index",
"Get an element from a list by its index",
2,
- "0.07" },
+ "1.0.0" },
{ "LINSERT",
"key BEFORE|AFTER pivot value",
"Insert an element before or after another element in a list",
2,
- "2.1.1" },
+ "2.2.0" },
{ "LLEN",
"key",
"Get the length of a list",
2,
- "0.07" },
+ "1.0.0" },
{ "LPOP",
"key",
"Remove and get the first element in a list",
2,
- "0.07" },
+ "1.0.0" },
{ "LPUSH",
- "key value",
- "Prepend a value to a list",
+ "key value [value ...]",
+ "Prepend one or multiple values to a list",
2,
- "0.07" },
+ "1.0.0" },
{ "LPUSHX",
"key value",
"Prepend a value to a list, only if the list exists",
2,
- "2.1.1" },
+ "2.2.0" },
{ "LRANGE",
"key start stop",
"Get a range of elements from a list",
2,
- "0.07" },
+ "1.0.0" },
{ "LREM",
"key count value",
"Remove elements from a list",
2,
- "0.07" },
+ "1.0.0" },
{ "LSET",
"key index value",
"Set the value of an element in a list by its index",
2,
- "0.07" },
+ "1.0.0" },
{ "LTRIM",
"key start stop",
"Trim a list to the specified range",
2,
- "0.07" },
+ "1.0.0" },
{ "MGET",
"key [key ...]",
"Get the values of all the given keys",
1,
- "0.07" },
+ "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",
9,
- "0.07" },
+ "1.0.0" },
{ "MOVE",
"key db",
"Move a key to another database",
0,
- "0.07" },
+ "1.0.0" },
{ "MSET",
"key value [key value ...]",
"Set multiple keys to multiple values",
1,
- "1.001" },
+ "1.0.1" },
{ "MSETNX",
"key value [key value ...]",
"Set multiple keys to multiple values, only if none of the keys exist",
1,
- "1.001" },
+ "1.0.1" },
{ "MULTI",
"-",
"Mark the start of a transaction block",
7,
- "1.1.95" },
+ "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",
0,
- "2.1.2" },
+ "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",
8,
- "0.07" },
+ "1.0.0" },
+ { "PSETEX",
+ "key milliseconds value",
+ "Set the value and expiration in milliseconds of a key",
+ 1,
+ "2.6.0" },
{ "PSUBSCRIBE",
- "pattern",
+ "pattern [pattern ...]",
"Listen for messages published to channels matching the given patterns",
6,
- "1.3.8" },
+ "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",
6,
- "1.3.8" },
+ "2.0.0" },
{ "PUNSUBSCRIBE",
"[pattern [pattern ...]]",
"Stop listening for messages posted to channels matching the given patterns",
6,
- "1.3.8" },
+ "2.0.0" },
{ "QUIT",
"-",
"Close the connection",
8,
- "0.07" },
+ "1.0.0" },
{ "RANDOMKEY",
"-",
"Return a random key from the keyspace",
0,
- "0.07" },
+ "1.0.0" },
{ "RENAME",
"key newkey",
"Rename a key",
0,
- "0.07" },
+ "1.0.0" },
{ "RENAMENX",
"key newkey",
"Rename a key, only if the new key does not exist",
0,
- "0.07" },
+ "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",
2,
- "0.07" },
+ "1.0.0" },
{ "RPOPLPUSH",
"source destination",
"Remove the last element in a list, append it to another list and return it",
2,
- "1.1" },
+ "1.2.0" },
{ "RPUSH",
- "key value",
- "Append a value to a list",
+ "key value [value ...]",
+ "Append one or multiple values to a list",
2,
- "0.07" },
+ "1.0.0" },
{ "RPUSHX",
"key value",
"Append a value to a list, only if the list exists",
2,
- "2.1.1" },
+ "2.2.0" },
{ "SADD",
- "key member",
- "Add a member to a set",
+ "key member [member ...]",
+ "Add one or more members to a set",
3,
- "0.07" },
+ "1.0.0" },
{ "SAVE",
"-",
"Synchronously save the dataset to disk",
9,
- "0.07" },
+ "1.0.0" },
{ "SCARD",
"key",
"Get the number of members in a set",
3,
- "0.07" },
+ "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",
3,
- "0.100" },
+ "1.0.0" },
{ "SDIFFSTORE",
"destination key [key ...]",
"Subtract multiple sets and store the resulting set in a key",
3,
- "0.100" },
+ "1.0.0" },
{ "SELECT",
"index",
"Change the selected database for the current connection",
8,
- "0.07" },
+ "1.0.0" },
{ "SET",
"key value",
"Set the string value of a key",
1,
- "0.07" },
+ "1.0.0" },
{ "SETBIT",
"key offset value",
"Sets or clears the bit at offset in the string value stored at key",
1,
- "2.1.8" },
+ "2.2.0" },
{ "SETEX",
"key seconds value",
"Set the value and expiration of a key",
1,
- "1.3.10" },
+ "2.0.0" },
{ "SETNX",
"key value",
"Set the value of a key, only if the key does not exist",
1,
- "0.07" },
+ "1.0.0" },
{ "SETRANGE",
"key offset value",
"Overwrite part of a string at key starting at the specified offset",
1,
- "2.1.8" },
+ "2.2.0" },
{ "SHUTDOWN",
- "-",
+ "[NOSAVE] [SAVE]",
"Synchronously save the dataset to disk and then shut down the server",
9,
- "0.07" },
+ "1.0.0" },
{ "SINTER",
"key [key ...]",
"Intersect multiple sets",
3,
- "0.07" },
+ "1.0.0" },
{ "SINTERSTORE",
"destination key [key ...]",
"Intersect multiple sets and store the resulting set in a key",
3,
- "0.07" },
+ "1.0.0" },
{ "SISMEMBER",
"key member",
"Determine if a given value is a member of a set",
3,
- "0.07" },
+ "1.0.0" },
{ "SLAVEOF",
"host port",
"Make the server a slave of another instance, or promote it as master",
9,
- "0.100" },
+ "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",
3,
- "0.07" },
+ "1.0.0" },
{ "SMOVE",
"source destination member",
"Move a member from one set to another",
3,
- "0.091" },
+ "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",
0,
- "0.07" },
+ "1.0.0" },
{ "SPOP",
"key",
"Remove and return a random member from a set",
3,
- "0.101" },
+ "1.0.0" },
{ "SRANDMEMBER",
"key",
"Get a random member from a set",
3,
- "1.001" },
+ "1.0.0" },
{ "SREM",
- "key member",
- "Remove a member from a set",
+ "key member [member ...]",
+ "Remove one or more members from a set",
3,
- "0.07" },
+ "1.0.0" },
{ "STRLEN",
"key",
"Get the length of the value stored in a key",
1,
- "2.1.2" },
+ "2.2.0" },
{ "SUBSCRIBE",
- "channel",
+ "channel [channel ...]",
"Listen for messages published to the given channels",
6,
- "1.3.8" },
- { "SUBSTR",
- "key start end",
- "Get a substring of the string stored at a key",
- 1,
- "1.3.4" },
+ "2.0.0" },
{ "SUNION",
"key [key ...]",
"Add multiple sets",
3,
- "0.091" },
+ "1.0.0" },
{ "SUNIONSTORE",
"destination key [key ...]",
"Add multiple sets and store the resulting set in a key",
3,
- "0.091" },
+ "1.0.0" },
{ "SYNC",
"-",
"Internal command used for replication",
9,
- "0.07" },
+ "1.0.0" },
+ { "TIME",
+ "-",
+ "Return the current server time",
+ 9,
+ "2.6.0" },
{ "TTL",
"key",
"Get the time to live for a key",
0,
- "0.100" },
+ "1.0.0" },
{ "TYPE",
"key",
"Determine the type stored at key",
0,
- "0.07" },
+ "1.0.0" },
{ "UNSUBSCRIBE",
"[channel [channel ...]]",
"Stop listening for messages posted to the given channels",
6,
- "1.3.8" },
+ "2.0.0" },
{ "UNWATCH",
"-",
"Forget about all watched keys",
7,
- "2.1.0" },
+ "2.2.0" },
{ "WATCH",
"key [key ...]",
"Watch the given keys to determine execution of the MULTI/EXEC block",
7,
- "2.1.0" },
+ "2.2.0" },
{ "ZADD",
- "key score member",
- "Add a member to a sorted set, or update its score if it already exists",
+ "key score member [score] [member]",
+ "Add one or more members to a sorted set, or update its score if it already exists",
4,
- "1.1" },
+ "1.2.0" },
{ "ZCARD",
"key",
"Get the number of members in a sorted set",
4,
- "1.1" },
+ "1.2.0" },
{ "ZCOUNT",
"key min max",
"Count the members in a sorted set with scores within the given values",
4,
- "1.3.3" },
+ "2.0.0" },
{ "ZINCRBY",
"key increment member",
"Increment the score of a member in a sorted set",
4,
- "1.1" },
+ "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",
4,
- "1.3.10" },
+ "2.0.0" },
{ "ZRANGE",
"key start stop [WITHSCORES]",
"Return a range of members in a sorted set, by index",
4,
- "1.1" },
+ "1.2.0" },
{ "ZRANGEBYSCORE",
"key min max [WITHSCORES] [LIMIT offset count]",
"Return a range of members in a sorted set, by score",
4,
- "1.050" },
+ "1.0.5" },
{ "ZRANK",
"key member",
"Determine the index of a member in a sorted set",
4,
- "1.3.4" },
+ "2.0.0" },
{ "ZREM",
- "key member",
- "Remove a member from a sorted set",
+ "key member [member ...]",
+ "Remove one or more members from a sorted set",
4,
- "1.1" },
+ "1.2.0" },
{ "ZREMRANGEBYRANK",
"key start stop",
"Remove all members in a sorted set within the given indexes",
4,
- "1.3.4" },
+ "2.0.0" },
{ "ZREMRANGEBYSCORE",
"key min max",
"Remove all members in a sorted set within the given scores",
4,
- "1.1" },
+ "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",
4,
- "1.1" },
+ "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.1.6" },
+ "2.2.0" },
{ "ZREVRANK",
"key member",
"Determine the index of a member in a sorted set, with scores ordered from high to low",
4,
- "1.3.4" },
+ "2.0.0" },
{ "ZSCORE",
"key member",
"Get the score associated with the given member in a sorted set",
4,
- "1.1" },
+ "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",
4,
- "1.3.10" }
+ "2.0.0" }
};
#endif
#include <float.h>
#include <math.h>
#include <sys/resource.h>
+#include <sys/utsname.h>
/* Our shared "common" objects */
{"ttl",ttlCommand,2,"r",0,NULL,1,1,1,0,0},
{"pttl",pttlCommand,2,"r",0,NULL,1,1,1,0,0},
{"persist",persistCommand,2,"w",0,NULL,1,1,1,0,0},
- {"slaveof",slaveofCommand,3,"aws",0,NULL,0,0,0,0,0},
+ {"slaveof",slaveofCommand,3,"as",0,NULL,0,0,0,0,0},
{"debug",debugCommand,-2,"as",0,NULL,0,0,0,0,0},
{"config",configCommand,-2,"ar",0,NULL,0,0,0,0,0},
{"subscribe",subscribeCommand,-2,"rps",0,NULL,0,0,0,0,0},
void redisLogRaw(int level, const char *msg) {
const int syslogLevelMap[] = { LOG_DEBUG, LOG_INFO, LOG_NOTICE, LOG_WARNING };
const char *c = ".-*#";
- time_t now = time(NULL);
FILE *fp;
char buf[64];
int rawmode = (level & REDIS_LOG_RAW);
if (rawmode) {
fprintf(fp,"%s",msg);
} else {
- strftime(buf,sizeof(buf),"%d %b %H:%M:%S",localtime(&now));
+ int off;
+ struct timeval tv;
+
+ gettimeofday(&tv,NULL);
+ off = strftime(buf,sizeof(buf),"%d %b %H:%M:%S.",localtime(&tv.tv_sec));
+ snprintf(buf+off,sizeof(buf)-off,"%03d",(int)tv.tv_usec/1000);
fprintf(fp,"[%d] %s %c %s\n",(int)getpid(),buf,c[level],msg);
}
fflush(fp);
server.repl_syncio_timeout = REDIS_REPL_SYNCIO_TIMEOUT;
server.repl_serve_stale_data = 1;
server.repl_slave_ro = 1;
- server.repl_down_since = -1;
+ server.repl_down_since = time(NULL);
/* Client output buffer limits */
server.client_obuf_limits[REDIS_CLIENT_LIMIT_CLASS_NORMAL].hard_limit_bytes = 0;
/* Server */
if (allsections || defsections || !strcasecmp(section,"server")) {
+ struct utsname name;
+
if (sections++) info = sdscat(info,"\r\n");
+ uname(&name);
info = sdscatprintf(info,
"# Server\r\n"
"redis_version:%s\r\n"
"redis_git_sha1:%s\r\n"
"redis_git_dirty:%d\r\n"
+ "os:%s %s %s\r\n"
"arch_bits:%d\r\n"
"multiplexing_api:%s\r\n"
"gcc_version:%d.%d.%d\r\n"
REDIS_VERSION,
redisGitSHA1(),
strtol(redisGitDirty(),NULL,10) > 0,
+ name.sysname, name.release, name.machine,
server.arch_bits,
aeGetApiName(),
#ifdef __GNUC__