mirror of
https://github.com/fluencelabs/redis
synced 2025-03-30 22:31:03 +00:00
SLAVEOF command implemented for replication remote control
This commit is contained in:
parent
c7cf2ec97c
commit
321b0e13f6
@ -1,3 +1,9 @@
|
|||||||
|
2009-05-22 Fix: no connection timeout for the master!
|
||||||
|
2009-05-22 replication slave timeout when receiving the initial bulk data set to 3600 seconds, now that replication is non-blocking the server must save the db before to start the async replication and this can take a lot of time with huge datasets
|
||||||
|
2009-05-22 README tutorial now reflects the new proto
|
||||||
|
2009-05-22 critical bug about glueoutputbuffers=yes fixed. Under load and with pipelining and clients disconnecting on the middle of the chat with the server, Redis could block. Now it's ok
|
||||||
|
2009-05-22 TTL command doc added
|
||||||
|
2009-05-22 TTL command implemented
|
||||||
2009-05-22 S*STORE now return the cardinality of the resulting set
|
2009-05-22 S*STORE now return the cardinality of the resulting set
|
||||||
2009-05-22 rubyredis more compatible with Redis-rb
|
2009-05-22 rubyredis more compatible with Redis-rb
|
||||||
2009-05-21 minor indentation fix
|
2009-05-21 minor indentation fix
|
||||||
|
2
TODO
2
TODO
@ -1,5 +1,7 @@
|
|||||||
BEFORE REDIS 1.0.0-rc1
|
BEFORE REDIS 1.0.0-rc1
|
||||||
|
|
||||||
|
* redis-cli should work on scripts too
|
||||||
|
* Replication status in INFO command. role: (master|slave) slaveof: <host:port>, slavestatus: (disconnected|ok)
|
||||||
* Warning if using default config, with hint about 'redis-server redis.conf'
|
* Warning if using default config, with hint about 'redis-server redis.conf'
|
||||||
* Add number of keys for every DB in INFO
|
* Add number of keys for every DB in INFO
|
||||||
* maxmemory support
|
* maxmemory support
|
||||||
|
@ -110,6 +110,7 @@ static struct redisCommand cmdTable[] = {
|
|||||||
{"mget",-2,REDIS_CMD_INLINE},
|
{"mget",-2,REDIS_CMD_INLINE},
|
||||||
{"expire",3,REDIS_CMD_INLINE},
|
{"expire",3,REDIS_CMD_INLINE},
|
||||||
{"ttl",2,REDIS_CMD_INLINE},
|
{"ttl",2,REDIS_CMD_INLINE},
|
||||||
|
{"slaveof",3,REDIS_CMD_INLINE},
|
||||||
{NULL,0,0}
|
{NULL,0,0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
26
redis.c
26
redis.c
@ -362,6 +362,7 @@ static void monitorCommand(redisClient *c);
|
|||||||
static void expireCommand(redisClient *c);
|
static void expireCommand(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);
|
||||||
|
|
||||||
/*================================= Globals ================================= */
|
/*================================= Globals ================================= */
|
||||||
|
|
||||||
@ -406,6 +407,7 @@ static struct redisCommand cmdTable[] = {
|
|||||||
{"move",moveCommand,3,REDIS_CMD_INLINE},
|
{"move",moveCommand,3,REDIS_CMD_INLINE},
|
||||||
{"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},
|
||||||
{"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},
|
||||||
@ -422,8 +424,8 @@ static struct redisCommand cmdTable[] = {
|
|||||||
{"sort",sortCommand,-2,REDIS_CMD_INLINE},
|
{"sort",sortCommand,-2,REDIS_CMD_INLINE},
|
||||||
{"info",infoCommand,1,REDIS_CMD_INLINE},
|
{"info",infoCommand,1,REDIS_CMD_INLINE},
|
||||||
{"monitor",monitorCommand,1,REDIS_CMD_INLINE},
|
{"monitor",monitorCommand,1,REDIS_CMD_INLINE},
|
||||||
{"expire",expireCommand,3,REDIS_CMD_INLINE},
|
|
||||||
{"ttl",ttlCommand,2,REDIS_CMD_INLINE},
|
{"ttl",ttlCommand,2,REDIS_CMD_INLINE},
|
||||||
|
{"slaveof",slaveofCommand,3,REDIS_CMD_INLINE},
|
||||||
{NULL,NULL,0,0}
|
{NULL,NULL,0,0}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -3918,6 +3920,28 @@ static int syncWithMaster(void) {
|
|||||||
return REDIS_OK;
|
return REDIS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void slaveofCommand(redisClient *c) {
|
||||||
|
if (!strcasecmp(c->argv[1]->ptr,"no") &&
|
||||||
|
!strcasecmp(c->argv[2]->ptr,"one")) {
|
||||||
|
if (server.masterhost) {
|
||||||
|
sdsfree(server.masterhost);
|
||||||
|
server.masterhost = NULL;
|
||||||
|
if (server.master) freeClient(server.master);
|
||||||
|
server.replstate = REDIS_REPL_NONE;
|
||||||
|
redisLog(REDIS_NOTICE,"MASTER MODE enabled (user request)");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
sdsfree(server.masterhost);
|
||||||
|
server.masterhost = sdsdup(c->argv[1]->ptr);
|
||||||
|
server.masterport = atoi(c->argv[2]->ptr);
|
||||||
|
if (server.master) freeClient(server.master);
|
||||||
|
server.replstate = REDIS_REPL_CONNECT;
|
||||||
|
redisLog(REDIS_NOTICE,"SLAVE OF %s:%d enabled (user request)",
|
||||||
|
server.masterhost, server.masterport);
|
||||||
|
}
|
||||||
|
addReply(c,shared.ok);
|
||||||
|
}
|
||||||
|
|
||||||
/* =================================== Main! ================================ */
|
/* =================================== Main! ================================ */
|
||||||
|
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
|
Loading…
x
Reference in New Issue
Block a user