From eed8495bf18242d5afd456ae8d73f392a7e9a84e Mon Sep 17 00:00:00 2001 From: antirez Date: Fri, 4 Apr 2014 16:10:00 +0200 Subject: [PATCH] Make LZF in-memory compression actually configurable. --- redis.conf | 4 ++++ src/config.c | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/redis.conf b/redis.conf index 1e53917b6..11fb26ad9 100644 --- a/redis.conf +++ b/redis.conf @@ -762,3 +762,7 @@ hz 10 # big latency spikes. aof-rewrite-incremental-fsync yes +# Transparently compress string objects in memory using LZF. +# For default this is set to no since it may affect performances, however +# when caching things like HTML fragments this may result into a big win. +memcompression no diff --git a/src/config.c b/src/config.c index 15ea1c5c3..e1de451e7 100644 --- a/src/config.c +++ b/src/config.c @@ -297,6 +297,10 @@ void loadServerConfigFromString(char *config) { if ((server.rdb_compression = yesnotoi(argv[1])) == -1) { err = "argument must be 'yes' or 'no'"; goto loaderr; } + } else if (!strcasecmp(argv[0],"memcompression") && argc == 2) { + if ((server.mem_compression = yesnotoi(argv[1])) == -1) { + err = "argument must be 'yes' or 'no'"; goto loaderr; + } } else if (!strcasecmp(argv[0],"rdbchecksum") && argc == 2) { if ((server.rdb_checksum = yesnotoi(argv[1])) == -1) { err = "argument must be 'yes' or 'no'"; goto loaderr; @@ -860,6 +864,11 @@ void configSetCommand(redisClient *c) { if (yn == -1) goto badfmt; server.rdb_compression = yn; + } else if (!strcasecmp(c->argv[2]->ptr,"memcompression")) { + int yn = yesnotoi(o->ptr); + + if (yn == -1) goto badfmt; + server.mem_compression = yn; } else if (!strcasecmp(c->argv[2]->ptr,"notify-keyspace-events")) { int flags = keyspaceEventsStringToFlags(o->ptr); @@ -1006,6 +1015,7 @@ void configGetCommand(redisClient *c) { server.stop_writes_on_bgsave_err); config_get_bool_field("daemonize", server.daemonize); config_get_bool_field("rdbcompression", server.rdb_compression); + config_get_bool_field("memcompression", server.mem_compression); config_get_bool_field("rdbchecksum", server.rdb_checksum); config_get_bool_field("activerehashing", server.activerehashing); config_get_bool_field("repl-disable-tcp-nodelay", @@ -1721,6 +1731,7 @@ int rewriteConfig(char *path) { rewriteConfigNumericalOption(state,"databases",server.dbnum,REDIS_DEFAULT_DBNUM); rewriteConfigYesNoOption(state,"stop-writes-on-bgsave-error",server.stop_writes_on_bgsave_err,REDIS_DEFAULT_STOP_WRITES_ON_BGSAVE_ERROR); rewriteConfigYesNoOption(state,"rdbcompression",server.rdb_compression,REDIS_DEFAULT_RDB_COMPRESSION); + rewriteConfigYesNoOption(state,"memcompression",server.mem_compression,REDIS_DEFAULT_MEM_COMPRESSION); rewriteConfigYesNoOption(state,"rdbchecksum",server.rdb_checksum,REDIS_DEFAULT_RDB_CHECKSUM); rewriteConfigStringOption(state,"dbfilename",server.rdb_filename,REDIS_DEFAULT_RDB_FILENAME); rewriteConfigDirOption(state); -- GitLab