Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
802e8373
Commit
802e8373
authored
Oct 30, 2009
by
antirez
Browse files
EXPIREAT implemented, will be useful for the append-only mode
parent
fa4c0aba
Changes
3
Hide whitespace changes
Inline
Side-by-side
TODO
View file @
802e8373
...
@@ -6,6 +6,7 @@ VERSION 1.1 TODO
...
@@ -6,6 +6,7 @@ VERSION 1.1 TODO
* Add all the missing symbols for the statis functions into the table. This backtrace on segfault is indeed *very* useful.
* Add all the missing symbols for the statis functions into the table. This backtrace on segfault is indeed *very* useful.
* Use strcoll() to compare objects in sorted sets, like it already happens for SORT.
* Use strcoll() to compare objects in sorted sets, like it already happens for SORT.
* LMOVE, as discussed in the Redis group.
* LMOVE, as discussed in the Redis group.
* EXPIRE and EXPIREAT tests.
VERSION 1.2 TODO
VERSION 1.2 TODO
...
...
redis-cli.c
View file @
802e8373
...
@@ -120,6 +120,7 @@ static struct redisCommand cmdTable[] = {
...
@@ -120,6 +120,7 @@ static struct redisCommand cmdTable[] = {
{
"info"
,
1
,
REDIS_CMD_INLINE
},
{
"info"
,
1
,
REDIS_CMD_INLINE
},
{
"mget"
,
-
2
,
REDIS_CMD_INLINE
},
{
"mget"
,
-
2
,
REDIS_CMD_INLINE
},
{
"expire"
,
3
,
REDIS_CMD_INLINE
},
{
"expire"
,
3
,
REDIS_CMD_INLINE
},
{
"expireat"
,
3
,
REDIS_CMD_INLINE
},
{
"ttl"
,
2
,
REDIS_CMD_INLINE
},
{
"ttl"
,
2
,
REDIS_CMD_INLINE
},
{
"slaveof"
,
3
,
REDIS_CMD_INLINE
},
{
"slaveof"
,
3
,
REDIS_CMD_INLINE
},
{
"debug"
,
-
2
,
REDIS_CMD_INLINE
},
{
"debug"
,
-
2
,
REDIS_CMD_INLINE
},
...
...
redis.c
View file @
802e8373
...
@@ -440,6 +440,7 @@ static void infoCommand(redisClient *c);
...
@@ -440,6 +440,7 @@ static void infoCommand(redisClient *c);
static void mgetCommand(redisClient *c);
static void mgetCommand(redisClient *c);
static void monitorCommand(redisClient *c);
static void monitorCommand(redisClient *c);
static void expireCommand(redisClient *c);
static void expireCommand(redisClient *c);
static void expireatCommand(redisClient *c);
static void getsetCommand(redisClient *c);
static void getsetCommand(redisClient *c);
static void ttlCommand(redisClient *c);
static void ttlCommand(redisClient *c);
static void slaveofCommand(redisClient *c);
static void slaveofCommand(redisClient *c);
...
@@ -511,6 +512,7 @@ static struct redisCommand cmdTable[] = {
...
@@ -511,6 +512,7 @@ static struct redisCommand cmdTable[] = {
{"rename",renameCommand,3,REDIS_CMD_INLINE},
{"rename",renameCommand,3,REDIS_CMD_INLINE},
{"renamenx",renamenxCommand,3,REDIS_CMD_INLINE},
{"renamenx",renamenxCommand,3,REDIS_CMD_INLINE},
{"expire",expireCommand,3,REDIS_CMD_INLINE},
{"expire",expireCommand,3,REDIS_CMD_INLINE},
{"expireat",expireatCommand,3,REDIS_CMD_INLINE},
{"keys",keysCommand,2,REDIS_CMD_INLINE},
{"keys",keysCommand,2,REDIS_CMD_INLINE},
{"dbsize",dbsizeCommand,1,REDIS_CMD_INLINE},
{"dbsize",dbsizeCommand,1,REDIS_CMD_INLINE},
{"auth",authCommand,2,REDIS_CMD_INLINE},
{"auth",authCommand,2,REDIS_CMD_INLINE},
...
@@ -4736,11 +4738,10 @@ static int deleteIfVolatile(redisDb *db, robj *key) {
...
@@ -4736,11 +4738,10 @@ static int deleteIfVolatile(redisDb *db, robj *key) {
return dictDelete(db->dict,key) == DICT_OK;
return dictDelete(db->dict,key) == DICT_OK;
}
}
static void expireCommand(redisClient *c) {
static void expire
Generic
Command(redisClient *c
, robj *key, time_t seconds
) {
dictEntry *de;
dictEntry *de;
int seconds = atoi(c->argv[2]->ptr);
de = dictFind(c->db->dict,
c->argv[1]
);
de = dictFind(c->db->dict,
key
);
if (de == NULL) {
if (de == NULL) {
addReply(c,shared.czero);
addReply(c,shared.czero);
return;
return;
...
@@ -4750,7 +4751,7 @@ static void expireCommand(redisClient *c) {
...
@@ -4750,7 +4751,7 @@ static void expireCommand(redisClient *c) {
return;
return;
} else {
} else {
time_t when = time(NULL)+seconds;
time_t when = time(NULL)+seconds;
if (setExpire(c->db,
c->argv[1]
,when)) {
if (setExpire(c->db,
key
,when)) {
addReply(c,shared.cone);
addReply(c,shared.cone);
server.dirty++;
server.dirty++;
} else {
} else {
...
@@ -4760,6 +4761,14 @@ static void expireCommand(redisClient *c) {
...
@@ -4760,6 +4761,14 @@ static void expireCommand(redisClient *c) {
}
}
}
}
static void expireCommand(redisClient *c) {
expireGenericCommand(c,c->argv[1],strtol(c->argv[2]->ptr,NULL,10));
}
static void expireatCommand(redisClient *c) {
expireGenericCommand(c,c->argv[1],strtol(c->argv[2]->ptr,NULL,10)-time(NULL));
}
static void ttlCommand(redisClient *c) {
static void ttlCommand(redisClient *c) {
time_t expire;
time_t expire;
int ttl = -1;
int ttl = -1;
...
@@ -5312,6 +5321,7 @@ static struct redisFunctionSym symsTable[] = {
...
@@ -5312,6 +5321,7 @@ static struct redisFunctionSym symsTable[] = {
{"mgetCommand", (unsigned long)mgetCommand},
{"mgetCommand", (unsigned long)mgetCommand},
{"monitorCommand", (unsigned long)monitorCommand},
{"monitorCommand", (unsigned long)monitorCommand},
{"expireCommand", (unsigned long)expireCommand},
{"expireCommand", (unsigned long)expireCommand},
{"expireatCommand", (unsigned long)expireatCommand},
{"getsetCommand", (unsigned long)getsetCommand},
{"getsetCommand", (unsigned long)getsetCommand},
{"ttlCommand", (unsigned long)ttlCommand},
{"ttlCommand", (unsigned long)ttlCommand},
{"slaveofCommand", (unsigned long)slaveofCommand},
{"slaveofCommand", (unsigned long)slaveofCommand},
...
...
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