diff options
author | antirez <antirez@gmail.com> | 2010-04-02 16:42:15 +0200 |
---|---|---|
committer | antirez <antirez@gmail.com> | 2010-04-02 16:42:15 +0200 |
commit | 4005fef12415087aed9bdfa4c1baadbb7a558bfb (patch) | |
tree | 6ed426d346806099e4c93e91801c00d89bc4b7f4 | |
parent | 8bca8773b4e2542f9537b8403764867aa76273a5 (diff) | |
download | redis-4005fef12415087aed9bdfa4c1baadbb7a558bfb.tar.gz |
Now PUBLISH commands are replicated to slaves
-rw-r--r-- | redis.c | 10 | ||||
-rw-r--r-- | redis.conf | 4 |
2 files changed, 9 insertions, 5 deletions
@@ -111,6 +111,7 @@ config file and the server is using more than maxmemory bytes of memory. In short this commands are denied on low memory conditions. */ #define REDIS_CMD_DENYOOM 4 +#define REDIS_CMD_FORCE_REPLICATION 8 /* Force replication even if dirty is 0 */ /* Object types */ #define REDIS_STRING 0 @@ -829,7 +830,7 @@ static struct redisCommand cmdTable[] = { {"unsubscribe",unsubscribeCommand,-1,REDIS_CMD_INLINE,NULL,0,0,0}, {"psubscribe",psubscribeCommand,-2,REDIS_CMD_INLINE,NULL,0,0,0}, {"punsubscribe",punsubscribeCommand,-1,REDIS_CMD_INLINE,NULL,0,0,0}, - {"publish",publishCommand,3,REDIS_CMD_BULK,NULL,0,0,0}, + {"publish",publishCommand,3,REDIS_CMD_BULK|REDIS_CMD_FORCE_REPLICATION,NULL,0,0,0}, {NULL,NULL,0,0,NULL,0,0,0} }; @@ -2120,9 +2121,12 @@ static void call(redisClient *c, struct redisCommand *cmd) { dirty = server.dirty; cmd->proc(c); - if (server.appendonly && server.dirty-dirty) + dirty = server.dirty-dirty; + + if (server.appendonly && dirty) feedAppendOnlyFile(cmd,c->db->id,c->argv,c->argc); - if (server.dirty-dirty && listLength(server.slaves)) + if ((dirty || cmd->flags & REDIS_CMD_FORCE_REPLICATION) && + listLength(server.slaves)) replicationFeedSlaves(server.slaves,c->db->id,c->argv,c->argc); if (listLength(server.monitors)) replicationFeedSlaves(server.monitors,c->db->id,c->argv,c->argc); diff --git a/redis.conf b/redis.conf index fc5ac59d4..095a00dea 100644 --- a/redis.conf +++ b/redis.conf @@ -133,7 +133,7 @@ dir ./ # happens this is the preferred way to run Redis. If instead you care a lot # about your data and don't want to that a single record can get lost you should # enable the append only mode: when this mode is enabled Redis will append -# every write operation received in the file appendonly.log. This file will +# every write operation received in the file appendonly.aof. This file will # be read on startup in order to rebuild the full dataset in memory. # # Note that you can have both the async dumps and the append only file if you @@ -141,7 +141,7 @@ dir ./ # Still if append only mode is enabled Redis will load the data from the # log file at startup ignoring the dump.rdb file. # -# The name of the append only file is "appendonly.log" +# The name of the append only file is "appendonly.aof" # # IMPORTANT: Check the BGREWRITEAOF to check how to rewrite the append # log file in background when it gets too big. |