summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2014-04-04 16:10:00 +0200
committerantirez <antirez@gmail.com>2014-04-04 16:10:00 +0200
commiteed8495bf18242d5afd456ae8d73f392a7e9a84e (patch)
tree3e1b0e1b3f547e184a3bdad6c9c8919bf95ce5c9
parent9acac9ceb0ec16846597ac84ee0c029fe7324488 (diff)
downloadredis-eed8495bf18242d5afd456ae8d73f392a7e9a84e.tar.gz
Make LZF in-memory compression actually configurable.
-rw-r--r--redis.conf4
-rw-r--r--src/config.c11
2 files changed, 15 insertions, 0 deletions
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);