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
d9cb288c
Commit
d9cb288c
authored
Jan 23, 2011
by
antirez
Browse files
profiling information in INFO
parent
89a1433e
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/redis.c
View file @
d9cb288c
...
@@ -69,125 +69,125 @@ double R_Zero, R_PosInf, R_NegInf, R_Nan;
...
@@ -69,125 +69,125 @@ double R_Zero, R_PosInf, R_NegInf, R_Nan;
struct
redisServer
server
;
/* server global state */
struct
redisServer
server
;
/* server global state */
struct
redisCommand
*
commandTable
;
struct
redisCommand
*
commandTable
;
struct
redisCommand
readonlyCommandTable
[]
=
{
struct
redisCommand
readonlyCommandTable
[]
=
{
{
"get"
,
getCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
},
{
"get"
,
getCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"set"
,
setCommand
,
3
,
REDIS_CMD_DENYOOM
,
NULL
,
0
,
0
,
0
},
{
"set"
,
setCommand
,
3
,
REDIS_CMD_DENYOOM
,
NULL
,
0
,
0
,
0
,
0
},
{
"setnx"
,
setnxCommand
,
3
,
REDIS_CMD_DENYOOM
,
NULL
,
0
,
0
,
0
},
{
"setnx"
,
setnxCommand
,
3
,
REDIS_CMD_DENYOOM
,
NULL
,
0
,
0
,
0
,
0
},
{
"setex"
,
setexCommand
,
4
,
REDIS_CMD_DENYOOM
,
NULL
,
0
,
0
,
0
},
{
"setex"
,
setexCommand
,
4
,
REDIS_CMD_DENYOOM
,
NULL
,
0
,
0
,
0
,
0
},
{
"append"
,
appendCommand
,
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
},
{
"append"
,
appendCommand
,
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
},
{
"strlen"
,
strlenCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
},
{
"strlen"
,
strlenCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"del"
,
delCommand
,
-
2
,
0
,
NULL
,
0
,
0
,
0
},
{
"del"
,
delCommand
,
-
2
,
0
,
NULL
,
0
,
0
,
0
,
0
},
{
"exists"
,
existsCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
},
{
"exists"
,
existsCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"setbit"
,
setbitCommand
,
4
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
},
{
"setbit"
,
setbitCommand
,
4
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
},
{
"getbit"
,
getbitCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
},
{
"getbit"
,
getbitCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"setrange"
,
setrangeCommand
,
4
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
},
{
"setrange"
,
setrangeCommand
,
4
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
},
{
"getrange"
,
getrangeCommand
,
4
,
0
,
NULL
,
1
,
1
,
1
},
{
"getrange"
,
getrangeCommand
,
4
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"substr"
,
getrangeCommand
,
4
,
0
,
NULL
,
1
,
1
,
1
},
{
"substr"
,
getrangeCommand
,
4
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"incr"
,
incrCommand
,
2
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
},
{
"incr"
,
incrCommand
,
2
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
},
{
"decr"
,
decrCommand
,
2
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
},
{
"decr"
,
decrCommand
,
2
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
},
{
"mget"
,
mgetCommand
,
-
2
,
0
,
NULL
,
1
,
-
1
,
1
},
{
"mget"
,
mgetCommand
,
-
2
,
0
,
NULL
,
1
,
-
1
,
1
,
0
},
{
"rpush"
,
rpushCommand
,
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
},
{
"rpush"
,
rpushCommand
,
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
},
{
"lpush"
,
lpushCommand
,
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
},
{
"lpush"
,
lpushCommand
,
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
},
{
"rpushx"
,
rpushxCommand
,
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
},
{
"rpushx"
,
rpushxCommand
,
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
},
{
"lpushx"
,
lpushxCommand
,
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
},
{
"lpushx"
,
lpushxCommand
,
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
},
{
"linsert"
,
linsertCommand
,
5
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
},
{
"linsert"
,
linsertCommand
,
5
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
},
{
"rpop"
,
rpopCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
},
{
"rpop"
,
rpopCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"lpop"
,
lpopCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
},
{
"lpop"
,
lpopCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"brpop"
,
brpopCommand
,
-
3
,
0
,
NULL
,
1
,
1
,
1
},
{
"brpop"
,
brpopCommand
,
-
3
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"brpoplpush"
,
brpoplpushCommand
,
4
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
2
,
1
},
{
"brpoplpush"
,
brpoplpushCommand
,
4
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
2
,
1
,
0
},
{
"blpop"
,
blpopCommand
,
-
3
,
0
,
NULL
,
1
,
1
,
1
},
{
"blpop"
,
blpopCommand
,
-
3
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"llen"
,
llenCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
},
{
"llen"
,
llenCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"lindex"
,
lindexCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
},
{
"lindex"
,
lindexCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"lset"
,
lsetCommand
,
4
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
},
{
"lset"
,
lsetCommand
,
4
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
},
{
"lrange"
,
lrangeCommand
,
4
,
0
,
NULL
,
1
,
1
,
1
},
{
"lrange"
,
lrangeCommand
,
4
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"ltrim"
,
ltrimCommand
,
4
,
0
,
NULL
,
1
,
1
,
1
},
{
"ltrim"
,
ltrimCommand
,
4
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"lrem"
,
lremCommand
,
4
,
0
,
NULL
,
1
,
1
,
1
},
{
"lrem"
,
lremCommand
,
4
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"rpoplpush"
,
rpoplpushCommand
,
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
2
,
1
},
{
"rpoplpush"
,
rpoplpushCommand
,
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
2
,
1
,
0
},
{
"sadd"
,
saddCommand
,
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
},
{
"sadd"
,
saddCommand
,
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
},
{
"srem"
,
sremCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
},
{
"srem"
,
sremCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"smove"
,
smoveCommand
,
4
,
0
,
NULL
,
1
,
2
,
1
},
{
"smove"
,
smoveCommand
,
4
,
0
,
NULL
,
1
,
2
,
1
,
0
},
{
"sismember"
,
sismemberCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
},
{
"sismember"
,
sismemberCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"scard"
,
scardCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
},
{
"scard"
,
scardCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"spop"
,
spopCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
},
{
"spop"
,
spopCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"srandmember"
,
srandmemberCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
},
{
"srandmember"
,
srandmemberCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"sinter"
,
sinterCommand
,
-
2
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
-
1
,
1
},
{
"sinter"
,
sinterCommand
,
-
2
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
-
1
,
1
,
0
},
{
"sinterstore"
,
sinterstoreCommand
,
-
3
,
REDIS_CMD_DENYOOM
,
NULL
,
2
,
-
1
,
1
},
{
"sinterstore"
,
sinterstoreCommand
,
-
3
,
REDIS_CMD_DENYOOM
,
NULL
,
2
,
-
1
,
1
,
0
},
{
"sunion"
,
sunionCommand
,
-
2
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
-
1
,
1
},
{
"sunion"
,
sunionCommand
,
-
2
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
-
1
,
1
,
0
},
{
"sunionstore"
,
sunionstoreCommand
,
-
3
,
REDIS_CMD_DENYOOM
,
NULL
,
2
,
-
1
,
1
},
{
"sunionstore"
,
sunionstoreCommand
,
-
3
,
REDIS_CMD_DENYOOM
,
NULL
,
2
,
-
1
,
1
,
0
},
{
"sdiff"
,
sdiffCommand
,
-
2
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
-
1
,
1
},
{
"sdiff"
,
sdiffCommand
,
-
2
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
-
1
,
1
,
0
},
{
"sdiffstore"
,
sdiffstoreCommand
,
-
3
,
REDIS_CMD_DENYOOM
,
NULL
,
2
,
-
1
,
1
},
{
"sdiffstore"
,
sdiffstoreCommand
,
-
3
,
REDIS_CMD_DENYOOM
,
NULL
,
2
,
-
1
,
1
,
0
},
{
"smembers"
,
sinterCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
},
{
"smembers"
,
sinterCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"zadd"
,
zaddCommand
,
4
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
},
{
"zadd"
,
zaddCommand
,
4
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
},
{
"zincrby"
,
zincrbyCommand
,
4
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
},
{
"zincrby"
,
zincrbyCommand
,
4
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
},
{
"zrem"
,
zremCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
},
{
"zrem"
,
zremCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"zremrangebyscore"
,
zremrangebyscoreCommand
,
4
,
0
,
NULL
,
1
,
1
,
1
},
{
"zremrangebyscore"
,
zremrangebyscoreCommand
,
4
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"zremrangebyrank"
,
zremrangebyrankCommand
,
4
,
0
,
NULL
,
1
,
1
,
1
},
{
"zremrangebyrank"
,
zremrangebyrankCommand
,
4
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"zunionstore"
,
zunionstoreCommand
,
-
4
,
REDIS_CMD_DENYOOM
,
zunionInterBlockClientOnSwappedKeys
,
0
,
0
,
0
},
{
"zunionstore"
,
zunionstoreCommand
,
-
4
,
REDIS_CMD_DENYOOM
,
zunionInterBlockClientOnSwappedKeys
,
0
,
0
,
0
,
0
},
{
"zinterstore"
,
zinterstoreCommand
,
-
4
,
REDIS_CMD_DENYOOM
,
zunionInterBlockClientOnSwappedKeys
,
0
,
0
,
0
},
{
"zinterstore"
,
zinterstoreCommand
,
-
4
,
REDIS_CMD_DENYOOM
,
zunionInterBlockClientOnSwappedKeys
,
0
,
0
,
0
,
0
},
{
"zrange"
,
zrangeCommand
,
-
4
,
0
,
NULL
,
1
,
1
,
1
},
{
"zrange"
,
zrangeCommand
,
-
4
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"zrangebyscore"
,
zrangebyscoreCommand
,
-
4
,
0
,
NULL
,
1
,
1
,
1
},
{
"zrangebyscore"
,
zrangebyscoreCommand
,
-
4
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"zrevrangebyscore"
,
zrevrangebyscoreCommand
,
-
4
,
0
,
NULL
,
1
,
1
,
1
},
{
"zrevrangebyscore"
,
zrevrangebyscoreCommand
,
-
4
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"zcount"
,
zcountCommand
,
4
,
0
,
NULL
,
1
,
1
,
1
},
{
"zcount"
,
zcountCommand
,
4
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"zrevrange"
,
zrevrangeCommand
,
-
4
,
0
,
NULL
,
1
,
1
,
1
},
{
"zrevrange"
,
zrevrangeCommand
,
-
4
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"zcard"
,
zcardCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
},
{
"zcard"
,
zcardCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"zscore"
,
zscoreCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
},
{
"zscore"
,
zscoreCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"zrank"
,
zrankCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
},
{
"zrank"
,
zrankCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"zrevrank"
,
zrevrankCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
},
{
"zrevrank"
,
zrevrankCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"hset"
,
hsetCommand
,
4
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
},
{
"hset"
,
hsetCommand
,
4
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
},
{
"hsetnx"
,
hsetnxCommand
,
4
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
},
{
"hsetnx"
,
hsetnxCommand
,
4
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
},
{
"hget"
,
hgetCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
},
{
"hget"
,
hgetCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"hmset"
,
hmsetCommand
,
-
4
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
},
{
"hmset"
,
hmsetCommand
,
-
4
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
},
{
"hmget"
,
hmgetCommand
,
-
3
,
0
,
NULL
,
1
,
1
,
1
},
{
"hmget"
,
hmgetCommand
,
-
3
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"hincrby"
,
hincrbyCommand
,
4
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
},
{
"hincrby"
,
hincrbyCommand
,
4
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
},
{
"hdel"
,
hdelCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
},
{
"hdel"
,
hdelCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"hlen"
,
hlenCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
},
{
"hlen"
,
hlenCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"hkeys"
,
hkeysCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
},
{
"hkeys"
,
hkeysCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"hvals"
,
hvalsCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
},
{
"hvals"
,
hvalsCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"hgetall"
,
hgetallCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
},
{
"hgetall"
,
hgetallCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"hexists"
,
hexistsCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
},
{
"hexists"
,
hexistsCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"incrby"
,
incrbyCommand
,
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
},
{
"incrby"
,
incrbyCommand
,
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
},
{
"decrby"
,
decrbyCommand
,
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
},
{
"decrby"
,
decrbyCommand
,
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
},
{
"getset"
,
getsetCommand
,
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
},
{
"getset"
,
getsetCommand
,
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
},
{
"mset"
,
msetCommand
,
-
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
-
1
,
2
},
{
"mset"
,
msetCommand
,
-
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
-
1
,
2
,
0
},
{
"msetnx"
,
msetnxCommand
,
-
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
-
1
,
2
},
{
"msetnx"
,
msetnxCommand
,
-
3
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
-
1
,
2
,
0
},
{
"randomkey"
,
randomkeyCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
},
{
"randomkey"
,
randomkeyCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
,
0
},
{
"select"
,
selectCommand
,
2
,
0
,
NULL
,
0
,
0
,
0
},
{
"select"
,
selectCommand
,
2
,
0
,
NULL
,
0
,
0
,
0
,
0
},
{
"move"
,
moveCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
},
{
"move"
,
moveCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"rename"
,
renameCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
},
{
"rename"
,
renameCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"renamenx"
,
renamenxCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
},
{
"renamenx"
,
renamenxCommand
,
3
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"expire"
,
expireCommand
,
3
,
0
,
NULL
,
0
,
0
,
0
},
{
"expire"
,
expireCommand
,
3
,
0
,
NULL
,
0
,
0
,
0
,
0
},
{
"expireat"
,
expireatCommand
,
3
,
0
,
NULL
,
0
,
0
,
0
},
{
"expireat"
,
expireatCommand
,
3
,
0
,
NULL
,
0
,
0
,
0
,
0
},
{
"keys"
,
keysCommand
,
2
,
0
,
NULL
,
0
,
0
,
0
},
{
"keys"
,
keysCommand
,
2
,
0
,
NULL
,
0
,
0
,
0
,
0
},
{
"dbsize"
,
dbsizeCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
},
{
"dbsize"
,
dbsizeCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
,
0
},
{
"auth"
,
authCommand
,
2
,
0
,
NULL
,
0
,
0
,
0
},
{
"auth"
,
authCommand
,
2
,
0
,
NULL
,
0
,
0
,
0
,
0
},
{
"ping"
,
pingCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
},
{
"ping"
,
pingCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
,
0
},
{
"echo"
,
echoCommand
,
2
,
0
,
NULL
,
0
,
0
,
0
},
{
"echo"
,
echoCommand
,
2
,
0
,
NULL
,
0
,
0
,
0
,
0
},
{
"save"
,
saveCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
},
{
"save"
,
saveCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
,
0
},
{
"bgsave"
,
bgsaveCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
},
{
"bgsave"
,
bgsaveCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
,
0
},
{
"bgrewriteaof"
,
bgrewriteaofCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
},
{
"bgrewriteaof"
,
bgrewriteaofCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
,
0
},
{
"shutdown"
,
shutdownCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
},
{
"shutdown"
,
shutdownCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
,
0
},
{
"lastsave"
,
lastsaveCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
},
{
"lastsave"
,
lastsaveCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
,
0
},
{
"type"
,
typeCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
},
{
"type"
,
typeCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"multi"
,
multiCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
},
{
"multi"
,
multiCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
,
0
},
{
"exec"
,
execCommand
,
1
,
REDIS_CMD_DENYOOM
,
execBlockClientOnSwappedKeys
,
0
,
0
,
0
},
{
"exec"
,
execCommand
,
1
,
REDIS_CMD_DENYOOM
,
execBlockClientOnSwappedKeys
,
0
,
0
,
0
,
0
},
{
"discard"
,
discardCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
},
{
"discard"
,
discardCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
,
0
},
{
"sync"
,
syncCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
},
{
"sync"
,
syncCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
,
0
},
{
"flushdb"
,
flushdbCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
},
{
"flushdb"
,
flushdbCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
,
0
},
{
"flushall"
,
flushallCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
},
{
"flushall"
,
flushallCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
,
0
},
{
"sort"
,
sortCommand
,
-
2
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
},
{
"sort"
,
sortCommand
,
-
2
,
REDIS_CMD_DENYOOM
,
NULL
,
1
,
1
,
1
,
0
},
{
"info"
,
infoCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
},
{
"info"
,
infoCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
,
0
},
{
"monitor"
,
monitorCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
},
{
"monitor"
,
monitorCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
,
0
},
{
"ttl"
,
ttlCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
},
{
"ttl"
,
ttlCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"persist"
,
persistCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
},
{
"persist"
,
persistCommand
,
2
,
0
,
NULL
,
1
,
1
,
1
,
0
},
{
"slaveof"
,
slaveofCommand
,
3
,
0
,
NULL
,
0
,
0
,
0
},
{
"slaveof"
,
slaveofCommand
,
3
,
0
,
NULL
,
0
,
0
,
0
,
0
},
{
"debug"
,
debugCommand
,
-
2
,
0
,
NULL
,
0
,
0
,
0
},
{
"debug"
,
debugCommand
,
-
2
,
0
,
NULL
,
0
,
0
,
0
,
0
},
{
"config"
,
configCommand
,
-
2
,
0
,
NULL
,
0
,
0
,
0
},
{
"config"
,
configCommand
,
-
2
,
0
,
NULL
,
0
,
0
,
0
,
0
},
{
"subscribe"
,
subscribeCommand
,
-
2
,
0
,
NULL
,
0
,
0
,
0
},
{
"subscribe"
,
subscribeCommand
,
-
2
,
0
,
NULL
,
0
,
0
,
0
,
0
},
{
"unsubscribe"
,
unsubscribeCommand
,
-
1
,
0
,
NULL
,
0
,
0
,
0
},
{
"unsubscribe"
,
unsubscribeCommand
,
-
1
,
0
,
NULL
,
0
,
0
,
0
,
0
},
{
"psubscribe"
,
psubscribeCommand
,
-
2
,
0
,
NULL
,
0
,
0
,
0
},
{
"psubscribe"
,
psubscribeCommand
,
-
2
,
0
,
NULL
,
0
,
0
,
0
,
0
},
{
"punsubscribe"
,
punsubscribeCommand
,
-
1
,
0
,
NULL
,
0
,
0
,
0
},
{
"punsubscribe"
,
punsubscribeCommand
,
-
1
,
0
,
NULL
,
0
,
0
,
0
,
0
},
{
"publish"
,
publishCommand
,
3
,
REDIS_CMD_FORCE_REPLICATION
,
NULL
,
0
,
0
,
0
},
{
"publish"
,
publishCommand
,
3
,
REDIS_CMD_FORCE_REPLICATION
,
NULL
,
0
,
0
,
0
,
0
},
{
"watch"
,
watchCommand
,
-
2
,
0
,
NULL
,
0
,
0
,
0
},
{
"watch"
,
watchCommand
,
-
2
,
0
,
NULL
,
0
,
0
,
0
,
0
},
{
"unwatch"
,
unwatchCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
}
{
"unwatch"
,
unwatchCommand
,
1
,
0
,
NULL
,
0
,
0
,
0
,
0
}
};
};
/*============================ Utility functions ============================ */
/*============================ Utility functions ============================ */
...
@@ -230,6 +230,17 @@ void oom(const char *msg) {
...
@@ -230,6 +230,17 @@ void oom(const char *msg) {
abort
();
abort
();
}
}
/* Return the UNIX time in microseconds */
long
long
ustime
(
void
)
{
struct
timeval
tv
;
long
long
ust
;
gettimeofday
(
&
tv
,
NULL
);
ust
=
((
long
long
)
tv
.
tv_sec
)
*
1000000
;
ust
+=
tv
.
tv_usec
;
return
ust
;
}
/*====================== Hash table type implementation ==================== */
/*====================== Hash table type implementation ==================== */
/* This is an hash table type that uses the SDS dynamic strings libary as
/* This is an hash table type that uses the SDS dynamic strings libary as
...
@@ -953,11 +964,12 @@ struct redisCommand *lookupCommandByCString(char *s) {
...
@@ -953,11 +964,12 @@ struct redisCommand *lookupCommandByCString(char *s) {
/* Call() is the core of Redis execution of a command */
/* Call() is the core of Redis execution of a command */
void
call
(
redisClient
*
c
,
struct
redisCommand
*
cmd
)
{
void
call
(
redisClient
*
c
,
struct
redisCommand
*
cmd
)
{
long
long
dirty
;
long
long
dirty
,
start
=
ustime
()
;
dirty
=
server
.
dirty
;
dirty
=
server
.
dirty
;
cmd
->
proc
(
c
);
cmd
->
proc
(
c
);
dirty
=
server
.
dirty
-
dirty
;
dirty
=
server
.
dirty
-
dirty
;
cmd
->
microseconds
+=
ustime
()
-
start
;
if
(
server
.
appendonly
&&
dirty
)
if
(
server
.
appendonly
&&
dirty
)
feedAppendOnlyFile
(
cmd
,
c
->
db
->
id
,
c
->
argv
,
c
->
argc
);
feedAppendOnlyFile
(
cmd
,
c
->
db
->
id
,
c
->
argv
,
c
->
argc
);
...
@@ -1147,7 +1159,7 @@ void bytesToHuman(char *s, unsigned long long n) {
...
@@ -1147,7 +1159,7 @@ void bytesToHuman(char *s, unsigned long long n) {
sds
genRedisInfoString
(
void
)
{
sds
genRedisInfoString
(
void
)
{
sds
info
;
sds
info
;
time_t
uptime
=
time
(
NULL
)
-
server
.
stat_starttime
;
time_t
uptime
=
time
(
NULL
)
-
server
.
stat_starttime
;
int
j
;
int
j
,
numcommands
;
char
hmem
[
64
];
char
hmem
[
64
];
struct
rusage
self_ru
,
c_ru
;
struct
rusage
self_ru
,
c_ru
;
unsigned
long
lol
,
bib
;
unsigned
long
lol
,
bib
;
...
@@ -1320,6 +1332,13 @@ sds genRedisInfoString(void) {
...
@@ -1320,6 +1332,13 @@ sds genRedisInfoString(void) {
}
}
info
=
sdscat
(
info
,
"
\r\n
"
);
info
=
sdscat
(
info
,
"
\r\n
"
);
numcommands
=
sizeof
(
readonlyCommandTable
)
/
sizeof
(
struct
redisCommand
);
for
(
j
=
0
;
j
<
numcommands
;
j
++
)
{
struct
redisCommand
*
c
=
readonlyCommandTable
+
j
;
info
=
sdscatprintf
(
info
,
"command_%s:microseconds:%lld
\r\n
"
,
c
->
name
,
c
->
microseconds
);
}
for
(
j
=
0
;
j
<
server
.
dbnum
;
j
++
)
{
for
(
j
=
0
;
j
<
server
.
dbnum
;
j
++
)
{
long
long
keys
,
vkeys
;
long
long
keys
,
vkeys
;
...
...
src/redis.h
View file @
d9cb288c
...
@@ -517,6 +517,7 @@ struct redisCommand {
...
@@ -517,6 +517,7 @@ struct redisCommand {
int
vm_firstkey
;
/* The first argument that's a key (0 = no keys) */
int
vm_firstkey
;
/* The first argument that's a key (0 = no keys) */
int
vm_lastkey
;
/* THe last argument that's a key */
int
vm_lastkey
;
/* THe last argument that's a key */
int
vm_keystep
;
/* The step between first and last key */
int
vm_keystep
;
/* The step between first and last key */
long
long
microseconds
;
};
};
struct
redisFunctionSym
{
struct
redisFunctionSym
{
...
...
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