From 1b67773229da874edd04c317a47470739d2b68e4 Mon Sep 17 00:00:00 2001 From: antirez Date: Mon, 10 May 2010 20:56:54 +0200 Subject: [PATCH] CONFIG now can change appendfsync policy at run time --- redis.c | 25 ++++++++++++++++++++++++- redis.conf | 4 ++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/redis.c b/redis.c index 0cea1fc7..4f3773d0 100644 --- a/redis.c +++ b/redis.c @@ -1635,7 +1635,7 @@ static void initServerConfig() { server.glueoutputbuf = 1; server.daemonize = 0; server.appendonly = 0; - server.appendfsync = APPENDFSYNC_ALWAYS; + server.appendfsync = APPENDFSYNC_EVERYSEC; server.lastfsync = time(NULL); server.appendfd = -1; server.appendseldb = -1; /* Make sure the first time will not match */ @@ -9683,6 +9683,16 @@ static void configSetCommand(redisClient *c) { server.masterauth = zstrdup(o->ptr); } else if (!strcasecmp(c->argv[2]->ptr,"maxmemory")) { server.maxmemory = strtoll(o->ptr, NULL, 10); + } else if (!strcasecmp(c->argv[2]->ptr,"appendfsync")) { + if (!strcasecmp(o->ptr,"no")) { + server.appendfsync = APPENDFSYNC_NO; + } else if (!strcasecmp(o->ptr,"everysec")) { + server.appendfsync = APPENDFSYNC_EVERYSEC; + } else if (!strcasecmp(o->ptr,"always")) { + server.appendfsync = APPENDFSYNC_ALWAYS; + } else { + goto badfmt; + } } else if (!strcasecmp(c->argv[2]->ptr,"save")) { int vlen, j; sds *v = sdssplitlen(o->ptr,sdslen(o->ptr)," ",1,&vlen); @@ -9768,6 +9778,19 @@ static void configGetCommand(redisClient *c) { addReplyBulkCString(c,buf); matches++; } + if (stringmatch(pattern,"appendfsync",0)) { + char *policy; + + switch(server.appendfsync) { + case APPENDFSYNC_NO: policy = "no"; break; + case APPENDFSYNC_EVERYSEC: policy = "everysec"; break; + case APPENDFSYNC_ALWAYS: policy = "always"; break; + default: policy = "unknown"; break; /* too harmless to panic */ + } + addReplyBulkCString(c,"appendfsync"); + addReplyBulkCString(c,policy); + matches++; + } if (stringmatch(pattern,"save",0)) { sds buf = sdsempty(); int j; diff --git a/redis.conf b/redis.conf index c946a80e..f8e64dc7 100644 --- a/redis.conf +++ b/redis.conf @@ -112,6 +112,10 @@ dir ./ # # This should stay commented out for backward compatibility and because most # people do not need auth (e.g. they run their own servers). +# +# Warning: since Redis is pretty fast an outside user can try up to +# 150k passwords per second against a good box. This means that you should +# use a very strong password otherwise it will be very easy to break. # # requirepass foobared -- GitLab