summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2010-04-02 16:42:15 +0200
committerantirez <antirez@gmail.com>2010-04-02 16:42:15 +0200
commit4005fef12415087aed9bdfa4c1baadbb7a558bfb (patch)
tree6ed426d346806099e4c93e91801c00d89bc4b7f4
parent8bca8773b4e2542f9537b8403764867aa76273a5 (diff)
downloadredis-4005fef12415087aed9bdfa4c1baadbb7a558bfb.tar.gz
Now PUBLISH commands are replicated to slaves
-rw-r--r--redis.c10
-rw-r--r--redis.conf4
2 files changed, 9 insertions, 5 deletions
diff --git a/redis.c b/redis.c
index 04d8b0be4..9e5bc94a9 100644
--- a/redis.c
+++ b/redis.c
@@ -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.