]> git.saurik.com Git - redis.git/commitdiff
CONFIG now can change appendfsync policy at run time
authorantirez <antirez@gmail.com>
Mon, 10 May 2010 18:56:54 +0000 (20:56 +0200)
committerantirez <antirez@gmail.com>
Mon, 10 May 2010 18:56:54 +0000 (20:56 +0200)
redis.c
redis.conf

diff --git a/redis.c b/redis.c
index 0cea1fc713f0fb51caeb3a725fd70e47c07d8438..4f3773d06a245a42fcd7aa88dfad68534306d2e2 100644 (file)
--- 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;
index c946a80e86d0fa21e75324b6dc2aa5519b35d990..f8e64dc76c6d0965f7804aef41383628933b96df 100644 (file)
@@ -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