Commit 4005fef1 authored by antirez's avatar antirez
Browse files

Now PUBLISH commands are replicated to slaves

parent 8bca8773
...@@ -111,6 +111,7 @@ ...@@ -111,6 +111,7 @@
config file and the server is using more than maxmemory bytes of memory. config file and the server is using more than maxmemory bytes of memory.
In short this commands are denied on low memory conditions. */ In short this commands are denied on low memory conditions. */
#define REDIS_CMD_DENYOOM 4 #define REDIS_CMD_DENYOOM 4
#define REDIS_CMD_FORCE_REPLICATION 8 /* Force replication even if dirty is 0 */
/* Object types */ /* Object types */
#define REDIS_STRING 0 #define REDIS_STRING 0
...@@ -829,7 +830,7 @@ static struct redisCommand cmdTable[] = { ...@@ -829,7 +830,7 @@ static struct redisCommand cmdTable[] = {
{"unsubscribe",unsubscribeCommand,-1,REDIS_CMD_INLINE,NULL,0,0,0}, {"unsubscribe",unsubscribeCommand,-1,REDIS_CMD_INLINE,NULL,0,0,0},
{"psubscribe",psubscribeCommand,-2,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}, {"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} {NULL,NULL,0,0,NULL,0,0,0}
}; };
...@@ -2120,9 +2121,12 @@ static void call(redisClient *c, struct redisCommand *cmd) { ...@@ -2120,9 +2121,12 @@ static void call(redisClient *c, struct redisCommand *cmd) {
dirty = server.dirty; dirty = server.dirty;
cmd->proc(c); 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); 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); replicationFeedSlaves(server.slaves,c->db->id,c->argv,c->argc);
if (listLength(server.monitors)) if (listLength(server.monitors))
replicationFeedSlaves(server.monitors,c->db->id,c->argv,c->argc); replicationFeedSlaves(server.monitors,c->db->id,c->argv,c->argc);
......
...@@ -133,7 +133,7 @@ dir ./ ...@@ -133,7 +133,7 @@ dir ./
# happens this is the preferred way to run Redis. If instead you care a lot # 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 # 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 # 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. # 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 # Note that you can have both the async dumps and the append only file if you
...@@ -141,7 +141,7 @@ dir ./ ...@@ -141,7 +141,7 @@ dir ./
# Still if append only mode is enabled Redis will load the data from the # Still if append only mode is enabled Redis will load the data from the
# log file at startup ignoring the dump.rdb file. # 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 # IMPORTANT: Check the BGREWRITEAOF to check how to rewrite the append
# log file in background when it gets too big. # log file in background when it gets too big.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment