Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
5d02b00f
Commit
5d02b00f
authored
Sep 26, 2011
by
antirez
Browse files
command table refactoring to make it simpler adding new flags
parent
e108bab0
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/redis.c
View file @
5d02b00f
...
@@ -69,135 +69,148 @@ double R_Zero, R_PosInf, R_NegInf, R_Nan;
...
@@ -69,135 +69,148 @@ double R_Zero, R_PosInf, R_NegInf, R_Nan;
/* Global vars */
/* Global vars */
struct
redisServer
server
;
/* server global state */
struct
redisServer
server
;
/* server global state */
struct
redisCommand
*
commandTable
;
struct
redisCommand
*
commandTable
;
/* Our command table. Command flags are expressed using strings where every
* character represents a flag. Later the populateCommandTable() function will
* take care of populating the real 'flags' field using this characters.
*
* This is the meaning of the flags:
*
* w: write command (may modify the key space).
* r: read command (will never modify the key space).
* m: may increase memory usage once called. Don't allow if out of memory.
* a: admin command, like SAVE or SHUTDOWN.
* p: Pub/Sub related command.
* f: force replication of this command, regarless of server.dirty. */
struct
redisCommand
redisCommandTable
[]
=
{
struct
redisCommand
redisCommandTable
[]
=
{
{
"get"
,
getCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"get"
,
getCommand
,
2
,
"r"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"set"
,
setCommand
,
3
,
REDIS_CMD_DENYOOM
,
noPreloadGetKeys
,
1
,
1
,
1
,
0
,
0
},
{
"set"
,
setCommand
,
3
,
"wm"
,
0
,
noPreloadGetKeys
,
1
,
1
,
1
,
0
,
0
},
{
"setnx"
,
setnxCommand
,
3
,
REDIS_CMD_DENYOOM
,
noPreloadGetKeys
,
1
,
1
,
1
,
0
,
0
},
{
"setnx"
,
setnxCommand
,
3
,
"wm"
,
0
,
noPreloadGetKeys
,
1
,
1
,
1
,
0
,
0
},
{
"setex"
,
setexCommand
,
4
,
REDIS_CMD_DENYOOM
,
noPreloadGetKeys
,
2
,
2
,
1
,
0
,
0
},
{
"setex"
,
setexCommand
,
4
,
"wm"
,
0
,
noPreloadGetKeys
,
2
,
2
,
1
,
0
,
0
},
{
"append"
,
appendCommand
,
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"append"
,
appendCommand
,
3
,
"wm"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"strlen"
,
strlenCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"strlen"
,
strlenCommand
,
2
,
"r"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"del"
,
delCommand
,
-
2
,
0
,
noPreloadGetKeys
,
1
,
-
1
,
1
,
0
,
0
},
{
"del"
,
delCommand
,
-
2
,
"w"
,
0
,
noPreloadGetKeys
,
1
,
-
1
,
1
,
0
,
0
},
{
"exists"
,
existsCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"exists"
,
existsCommand
,
2
,
"r"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"setbit"
,
setbitCommand
,
4
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"setbit"
,
setbitCommand
,
4
,
"wm"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"getbit"
,
getbitCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"getbit"
,
getbitCommand
,
3
,
"r"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"setrange"
,
setrangeCommand
,
4
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"setrange"
,
setrangeCommand
,
4
,
"wm"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"getrange"
,
getrangeCommand
,
4
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"getrange"
,
getrangeCommand
,
4
,
"r"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"substr"
,
getrangeCommand
,
4
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"substr"
,
getrangeCommand
,
4
,
"r"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"incr"
,
incrCommand
,
2
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"incr"
,
incrCommand
,
2
,
"wm"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"decr"
,
decrCommand
,
2
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"decr"
,
decrCommand
,
2
,
"wm"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"mget"
,
mgetCommand
,
-
2
,
0
,
NULL
,
1
,
-
1
,
1
,
0
,
0
},
{
"mget"
,
mgetCommand
,
-
2
,
"r"
,
0
,
NULL
,
1
,
-
1
,
1
,
0
,
0
},
{
"rpush"
,
rpushCommand
,
-
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"rpush"
,
rpushCommand
,
-
3
,
"wm"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"lpush"
,
lpushCommand
,
-
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"lpush"
,
lpushCommand
,
-
3
,
"wm"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"rpushx"
,
rpushxCommand
,
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"rpushx"
,
rpushxCommand
,
3
,
"wm"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"lpushx"
,
lpushxCommand
,
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"lpushx"
,
lpushxCommand
,
3
,
"wm"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"linsert"
,
linsertCommand
,
5
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"linsert"
,
linsertCommand
,
5
,
"wm"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"rpop"
,
rpopCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"rpop"
,
rpopCommand
,
2
,
"w"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"lpop"
,
lpopCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"lpop"
,
lpopCommand
,
2
,
"w"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"brpop"
,
brpopCommand
,
-
3
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"brpop"
,
brpopCommand
,
-
3
,
"w"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"brpoplpush"
,
brpoplpushCommand
,
4
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
2
,
1
,
0
,
0
},
{
"brpoplpush"
,
brpoplpushCommand
,
4
,
"wm"
,
0
,
NULL
,
1
,
2
,
1
,
0
,
0
},
{
"blpop"
,
blpopCommand
,
-
3
,
0
,
NULL
,
1
,
-
2
,
1
,
0
,
0
},
{
"blpop"
,
blpopCommand
,
-
3
,
"w"
,
0
,
NULL
,
1
,
-
2
,
1
,
0
,
0
},
{
"llen"
,
llenCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"llen"
,
llenCommand
,
2
,
"r"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"lindex"
,
lindexCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"lindex"
,
lindexCommand
,
3
,
"r"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"lset"
,
lsetCommand
,
4
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"lset"
,
lsetCommand
,
4
,
"wm"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"lrange"
,
lrangeCommand
,
4
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"lrange"
,
lrangeCommand
,
4
,
"r"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"ltrim"
,
ltrimCommand
,
4
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"ltrim"
,
ltrimCommand
,
4
,
"w"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"lrem"
,
lremCommand
,
4
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"lrem"
,
lremCommand
,
4
,
"w"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"rpoplpush"
,
rpoplpushCommand
,
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
2
,
1
,
0
,
0
},
{
"rpoplpush"
,
rpoplpushCommand
,
3
,
"wm"
,
0
,
NULL
,
1
,
2
,
1
,
0
,
0
},
{
"sadd"
,
saddCommand
,
-
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"sadd"
,
saddCommand
,
-
3
,
"wm"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"srem"
,
sremCommand
,
-
3
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"srem"
,
sremCommand
,
-
3
,
"w"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"smove"
,
smoveCommand
,
4
,
0
,
NULL
,
1
,
2
,
1
,
0
,
0
},
{
"smove"
,
smoveCommand
,
4
,
"w"
,
0
,
NULL
,
1
,
2
,
1
,
0
,
0
},
{
"sismember"
,
sismemberCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"sismember"
,
sismemberCommand
,
3
,
"r"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"scard"
,
scardCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"scard"
,
scardCommand
,
2
,
"r"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"spop"
,
spopCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"spop"
,
spopCommand
,
2
,
"w"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"srandmember"
,
srandmemberCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"srandmember"
,
srandmemberCommand
,
2
,
"r"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"sinter"
,
sinterCommand
,
-
2
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
-
1
,
1
,
0
,
0
},
{
"sinter"
,
sinterCommand
,
-
2
,
"r"
,
0
,
NULL
,
1
,
-
1
,
1
,
0
,
0
},
{
"sinterstore"
,
sinterstoreCommand
,
-
3
,
REDIS_CMD_DENYOOM
,
NULL
,
2
,
-
1
,
1
,
0
,
0
},
{
"sinterstore"
,
sinterstoreCommand
,
-
3
,
"wm"
,
0
,
NULL
,
2
,
-
1
,
1
,
0
,
0
},
{
"sunion"
,
sunionCommand
,
-
2
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
-
1
,
1
,
0
,
0
},
{
"sunion"
,
sunionCommand
,
-
2
,
"r"
,
0
,
NULL
,
1
,
-
1
,
1
,
0
,
0
},
{
"sunionstore"
,
sunionstoreCommand
,
-
3
,
REDIS_CMD_DENYOOM
,
NULL
,
2
,
-
1
,
1
,
0
,
0
},
{
"sunionstore"
,
sunionstoreCommand
,
-
3
,
"wm"
,
0
,
NULL
,
2
,
-
1
,
1
,
0
,
0
},
{
"sdiff"
,
sdiffCommand
,
-
2
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
-
1
,
1
,
0
,
0
},
{
"sdiff"
,
sdiffCommand
,
-
2
,
"r"
,
0
,
NULL
,
1
,
-
1
,
1
,
0
,
0
},
{
"sdiffstore"
,
sdiffstoreCommand
,
-
3
,
REDIS_CMD_DENYOOM
,
NULL
,
2
,
-
1
,
1
,
0
,
0
},
{
"sdiffstore"
,
sdiffstoreCommand
,
-
3
,
"wm"
,
0
,
NULL
,
2
,
-
1
,
1
,
0
,
0
},
{
"smembers"
,
sinterCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"smembers"
,
sinterCommand
,
2
,
"r"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"zadd"
,
zaddCommand
,
-
4
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"zadd"
,
zaddCommand
,
-
4
,
"wm"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"zincrby"
,
zincrbyCommand
,
4
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"zincrby"
,
zincrbyCommand
,
4
,
"wm"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"zrem"
,
zremCommand
,
-
3
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"zrem"
,
zremCommand
,
-
3
,
"w"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"zremrangebyscore"
,
zremrangebyscoreCommand
,
4
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"zremrangebyscore"
,
zremrangebyscoreCommand
,
4
,
"w"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"zremrangebyrank"
,
zremrangebyrankCommand
,
4
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"zremrangebyrank"
,
zremrangebyrankCommand
,
4
,
"w"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"zunionstore"
,
zunionstoreCommand
,
-
4
,
REDIS_CMD_DENYOOM
,
zunionInterGetKeys
,
0
,
0
,
0
,
0
,
0
},
{
"zunionstore"
,
zunionstoreCommand
,
-
4
,
"wm"
,
0
,
zunionInterGetKeys
,
0
,
0
,
0
,
0
,
0
},
{
"zinterstore"
,
zinterstoreCommand
,
-
4
,
REDIS_CMD_DENYOOM
,
zunionInterGetKeys
,
0
,
0
,
0
,
0
,
0
},
{
"zinterstore"
,
zinterstoreCommand
,
-
4
,
"wm"
,
0
,
zunionInterGetKeys
,
0
,
0
,
0
,
0
,
0
},
{
"zrange"
,
zrangeCommand
,
-
4
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"zrange"
,
zrangeCommand
,
-
4
,
"r"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"zrangebyscore"
,
zrangebyscoreCommand
,
-
4
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"zrangebyscore"
,
zrangebyscoreCommand
,
-
4
,
"r"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"zrevrangebyscore"
,
zrevrangebyscoreCommand
,
-
4
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"zrevrangebyscore"
,
zrevrangebyscoreCommand
,
-
4
,
"r"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"zcount"
,
zcountCommand
,
4
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"zcount"
,
zcountCommand
,
4
,
"r"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"zrevrange"
,
zrevrangeCommand
,
-
4
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"zrevrange"
,
zrevrangeCommand
,
-
4
,
"r"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"zcard"
,
zcardCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"zcard"
,
zcardCommand
,
2
,
"r"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"zscore"
,
zscoreCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"zscore"
,
zscoreCommand
,
3
,
"r"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"zrank"
,
zrankCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"zrank"
,
zrankCommand
,
3
,
"r"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"zrevrank"
,
zrevrankCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"zrevrank"
,
zrevrankCommand
,
3
,
"r"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"hset"
,
hsetCommand
,
4
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"hset"
,
hsetCommand
,
4
,
"wm"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"hsetnx"
,
hsetnxCommand
,
4
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"hsetnx"
,
hsetnxCommand
,
4
,
"wm"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"hget"
,
hgetCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"hget"
,
hgetCommand
,
3
,
"r"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"hmset"
,
hmsetCommand
,
-
4
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"hmset"
,
hmsetCommand
,
-
4
,
"wm"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"hmget"
,
hmgetCommand
,
-
3
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"hmget"
,
hmgetCommand
,
-
3
,
"r"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"hincrby"
,
hincrbyCommand
,
4
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"hincrby"
,
hincrbyCommand
,
4
,
"wm"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"hdel"
,
hdelCommand
,
-
3
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"hdel"
,
hdelCommand
,
-
3
,
"w"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"hlen"
,
hlenCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"hlen"
,
hlenCommand
,
2
,
"r"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"hkeys"
,
hkeysCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"hkeys"
,
hkeysCommand
,
2
,
"r"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"hvals"
,
hvalsCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"hvals"
,
hvalsCommand
,
2
,
"r"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"hgetall"
,
hgetallCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"hgetall"
,
hgetallCommand
,
2
,
"r"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"hexists"
,
hexistsCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"hexists"
,
hexistsCommand
,
3
,
"r"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"incrby"
,
incrbyCommand
,
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"incrby"
,
incrbyCommand
,
3
,
"wm"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"decrby"
,
decrbyCommand
,
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"decrby"
,
decrbyCommand
,
3
,
"wm"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"getset"
,
getsetCommand
,
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"getset"
,
getsetCommand
,
3
,
"wm"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"mset"
,
msetCommand
,
-
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
-
1
,
2
,
0
,
0
},
{
"mset"
,
msetCommand
,
-
3
,
"wm"
,
0
,
NULL
,
1
,
-
1
,
2
,
0
,
0
},
{
"msetnx"
,
msetnxCommand
,
-
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
-
1
,
2
,
0
,
0
},
{
"msetnx"
,
msetnxCommand
,
-
3
,
"wm"
,
0
,
NULL
,
1
,
-
1
,
2
,
0
,
0
},
{
"randomkey"
,
randomkeyCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"randomkey"
,
randomkeyCommand
,
1
,
"r"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"select"
,
selectCommand
,
2
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"select"
,
selectCommand
,
2
,
"r"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"move"
,
moveCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"move"
,
moveCommand
,
3
,
"w"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"rename"
,
renameCommand
,
3
,
0
,
renameGetKeys
,
1
,
2
,
1
,
0
,
0
},
{
"rename"
,
renameCommand
,
3
,
"w"
,
0
,
renameGetKeys
,
1
,
2
,
1
,
0
,
0
},
{
"renamenx"
,
renamenxCommand
,
3
,
0
,
renameGetKeys
,
1
,
2
,
1
,
0
,
0
},
{
"renamenx"
,
renamenxCommand
,
3
,
"w"
,
0
,
renameGetKeys
,
1
,
2
,
1
,
0
,
0
},
{
"expire"
,
expireCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"expire"
,
expireCommand
,
3
,
"w"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"expireat"
,
expireatCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"expireat"
,
expireatCommand
,
3
,
"w"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"keys"
,
keysCommand
,
2
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"keys"
,
keysCommand
,
2
,
"r"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"dbsize"
,
dbsizeCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"dbsize"
,
dbsizeCommand
,
1
,
"r"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"auth"
,
authCommand
,
2
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"auth"
,
authCommand
,
2
,
"r"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"ping"
,
pingCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"ping"
,
pingCommand
,
1
,
"r"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"echo"
,
echoCommand
,
2
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"echo"
,
echoCommand
,
2
,
"r"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"save"
,
saveCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"save"
,
saveCommand
,
1
,
"ar"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"bgsave"
,
bgsaveCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"bgsave"
,
bgsaveCommand
,
1
,
"ar"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"bgrewriteaof"
,
bgrewriteaofCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"bgrewriteaof"
,
bgrewriteaofCommand
,
1
,
"ar"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"shutdown"
,
shutdownCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"shutdown"
,
shutdownCommand
,
1
,
"ar"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"lastsave"
,
lastsaveCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"lastsave"
,
lastsaveCommand
,
1
,
"r"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"type"
,
typeCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"type"
,
typeCommand
,
2
,
"r"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"multi"
,
multiCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"multi"
,
multiCommand
,
1
,
"r"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"exec"
,
execCommand
,
1
,
REDIS_CMD_DENYOOM
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"exec"
,
execCommand
,
1
,
"wm"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"discard"
,
discardCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"discard"
,
discardCommand
,
1
,
"r"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"sync"
,
syncCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"sync"
,
syncCommand
,
1
,
"ar"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"flushdb"
,
flushdbCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"flushdb"
,
flushdbCommand
,
1
,
"w"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"flushall"
,
flushallCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"flushall"
,
flushallCommand
,
1
,
"w"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"sort"
,
sortCommand
,
-
2
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"sort"
,
sortCommand
,
-
2
,
"wm"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"info"
,
infoCommand
,
-
1
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"info"
,
infoCommand
,
-
1
,
"r"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"monitor"
,
monitorCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"monitor"
,
monitorCommand
,
1
,
"ar"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"ttl"
,
ttlCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"ttl"
,
ttlCommand
,
2
,
"r"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"persist"
,
persistCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"persist"
,
persistCommand
,
2
,
"w"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"slaveof"
,
slaveofCommand
,
3
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"slaveof"
,
slaveofCommand
,
3
,
"aw"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"debug"
,
debugCommand
,
-
2
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"debug"
,
debugCommand
,
-
2
,
"aw"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"config"
,
configCommand
,
-
2
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"config"
,
configCommand
,
-
2
,
"ar"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"subscribe"
,
subscribeCommand
,
-
2
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"subscribe"
,
subscribeCommand
,
-
2
,
"rp"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"unsubscribe"
,
unsubscribeCommand
,
-
1
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"unsubscribe"
,
unsubscribeCommand
,
-
1
,
"rp"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"psubscribe"
,
psubscribeCommand
,
-
2
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"psubscribe"
,
psubscribeCommand
,
-
2
,
"rp"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"punsubscribe"
,
punsubscribeCommand
,
-
1
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"punsubscribe"
,
punsubscribeCommand
,
-
1
,
"rp"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"publish"
,
publishCommand
,
3
,
REDIS_CMD_FORCE_REPLICATION
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"publish"
,
publishCommand
,
3
,
"rpf"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"watch"
,
watchCommand
,
-
2
,
0
,
noPreloadGetKeys
,
1
,
-
1
,
1
,
0
,
0
},
{
"watch"
,
watchCommand
,
-
2
,
"r"
,
0
,
noPreloadGetKeys
,
1
,
-
1
,
1
,
0
,
0
},
{
"unwatch"
,
unwatchCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"unwatch"
,
unwatchCommand
,
1
,
"r"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"cluster"
,
clusterCommand
,
-
2
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"cluster"
,
clusterCommand
,
-
2
,
"ar"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"restore"
,
restoreCommand
,
4
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"restore"
,
restoreCommand
,
4
,
"awm"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"migrate"
,
migrateCommand
,
6
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"migrate"
,
migrateCommand
,
6
,
"aw"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"dump"
,
dumpCommand
,
2
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"dump"
,
dumpCommand
,
2
,
"ar"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"object"
,
objectCommand
,
-
2
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"object"
,
objectCommand
,
-
2
,
"r"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"client"
,
clientCommand
,
-
2
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"client"
,
clientCommand
,
-
2
,
"ar"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"eval"
,
evalCommand
,
-
3
,
REDIS_CMD_DENYOOM
,
zunionInterGetKeys
,
0
,
0
,
0
,
0
,
0
},
{
"eval"
,
evalCommand
,
-
3
,
"wm"
,
0
,
zunionInterGetKeys
,
0
,
0
,
0
,
0
,
0
},
{
"evalsha"
,
evalShaCommand
,
-
3
,
REDIS_CMD_DENYOOM
,
zunionInterGetKeys
,
0
,
0
,
0
,
0
,
0
},
{
"evalsha"
,
evalShaCommand
,
-
3
,
"wm"
,
0
,
zunionInterGetKeys
,
0
,
0
,
0
,
0
,
0
},
{
"slowlog"
,
slowlogCommand
,
-
2
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
}
{
"slowlog"
,
slowlogCommand
,
-
2
,
"r"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
}
};
};
/*============================ Utility functions ============================ */
/*============================ Utility functions ============================ */
...
@@ -986,8 +999,22 @@ void populateCommandTable(void) {
...
@@ -986,8 +999,22 @@ void populateCommandTable(void) {
for
(
j
=
0
;
j
<
numcommands
;
j
++
)
{
for
(
j
=
0
;
j
<
numcommands
;
j
++
)
{
struct
redisCommand
*
c
=
redisCommandTable
+
j
;
struct
redisCommand
*
c
=
redisCommandTable
+
j
;
char
*
f
=
c
->
sflags
;
int
retval
;
int
retval
;
while
(
*
f
!=
'\0'
)
{
switch
(
*
f
)
{
case
'w'
:
c
->
flags
|=
REDIS_CMD_WRITE
;
break
;
case
'r'
:
c
->
flags
|=
REDIS_CMD_READONLY
;
break
;
case
'm'
:
c
->
flags
|=
REDIS_CMD_DENYOOM
;
break
;
case
'a'
:
c
->
flags
|=
REDIS_CMD_ADMIN
;
break
;
case
'p'
:
c
->
flags
|=
REDIS_CMD_PUBSUB
;
break
;
case
'f'
:
c
->
flags
|=
REDIS_CMD_FORCE_REPLICATION
;
break
;
default:
redisPanic
(
"Unsupported command flag"
);
break
;
}
f
++
;
}
retval
=
dictAdd
(
server
.
commands
,
sdsnew
(
c
->
name
),
c
);
retval
=
dictAdd
(
server
.
commands
,
sdsnew
(
c
->
name
),
c
);
assert
(
retval
==
DICT_OK
);
assert
(
retval
==
DICT_OK
);
}
}
...
...
src/redis.h
View file @
5d02b00f
...
@@ -59,15 +59,14 @@
...
@@ -59,15 +59,14 @@
/* Hash table parameters */
/* Hash table parameters */
#define REDIS_HT_MINFILL 10
/* Minimal hash table fill 10% */
#define REDIS_HT_MINFILL 10
/* Minimal hash table fill 10% */
/* Command flags:
/* Command flags. Please check the command table defined in the redis.c file
* REDIS_CMD_DENYOOM:
* for more information about the meaning of every flag. */
* Commands marked with this flag will return an error when 'maxmemory' is
#define REDIS_CMD_WRITE 1
/* "w" flag */
* set and the server is using more than 'maxmemory' bytes of memory.
#define REDIS_CMD_READONLY 2
/* "r" flag */
* In short: commands with this flag are denied on low memory conditions.
#define REDIS_CMD_DENYOOM 4
/* "m" flag */
* REDIS_CMD_FORCE_REPLICATION:
#define REDIS_CMD_FORCE_REPLICATION 8
/* "f" flag */
* Force replication even if dirty is 0. */
#define REDIS_CMD_ADMIN 16
/* "a" flag */
#define REDIS_CMD_DENYOOM 4
#define REDIS_CMD_PUBSUB 32
/* "p" flag */
#define REDIS_CMD_FORCE_REPLICATION 8
/* Object types */
/* Object types */
#define REDIS_STRING 0
#define REDIS_STRING 0
...
@@ -635,7 +634,8 @@ struct redisCommand {
...
@@ -635,7 +634,8 @@ struct redisCommand {
char
*
name
;
char
*
name
;
redisCommandProc
*
proc
;
redisCommandProc
*
proc
;
int
arity
;
int
arity
;
int
flags
;
char
*
sflags
;
/* Flags as string represenation, one char per flag. */
int
flags
;
/* The actual flags, obtained from the 'sflags' field. */
/* Use a function to determine keys arguments in a command line.
/* Use a function to determine keys arguments in a command line.
* Used for Redis Cluster redirect. */
* Used for Redis Cluster redirect. */
redisGetKeysProc
*
getkeys_proc
;
redisGetKeysProc
*
getkeys_proc
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment