mirror of
https://github.com/fluencelabs/redis
synced 2025-06-12 08:41:21 +00:00
added noeviction policy to redis maxmemory. ZSCORE removed from the list of commands that can't be called when we are low on memory, this command was added in the past for a stupid error.
This commit is contained in:
@ -136,6 +136,8 @@ void loadServerConfig(char *filename) {
|
||||
server.maxmemory_policy = REDIS_MAXMEMORY_ALLKEYS_LRU;
|
||||
} else if (!strcasecmp(argv[1],"allkeys-random")) {
|
||||
server.maxmemory_policy = REDIS_MAXMEMORY_ALLKEYS_RANDOM;
|
||||
} else if (!strcasecmp(argv[1],"noeviction")) {
|
||||
server.maxmemory_policy = REDIS_MAXMEMORY_NO_EVICTION;
|
||||
} else {
|
||||
err = "Invalid maxmemory policy";
|
||||
goto loaderr;
|
||||
@ -307,6 +309,8 @@ void configSetCommand(redisClient *c) {
|
||||
server.maxmemory_policy = REDIS_MAXMEMORY_ALLKEYS_LRU;
|
||||
} else if (!strcasecmp(o->ptr,"allkeys-random")) {
|
||||
server.maxmemory_policy = REDIS_MAXMEMORY_ALLKEYS_RANDOM;
|
||||
} else if (!strcasecmp(o->ptr,"noeviction")) {
|
||||
server.maxmemory_policy = REDIS_MAXMEMORY_NO_EVICTION;
|
||||
} else {
|
||||
goto badfmt;
|
||||
}
|
||||
@ -440,6 +444,7 @@ void configGetCommand(redisClient *c) {
|
||||
case REDIS_MAXMEMORY_VOLATILE_RANDOM: s = "volatile-random"; break;
|
||||
case REDIS_MAXMEMORY_ALLKEYS_LRU: s = "allkeys-lru"; break;
|
||||
case REDIS_MAXMEMORY_ALLKEYS_RANDOM: s = "allkeys-random"; break;
|
||||
case REDIS_MAXMEMORY_NO_EVICTION: s = "noeviction"; break;
|
||||
default: s = "unknown"; break; /* too harmless to panic */
|
||||
}
|
||||
addReplyBulkCString(c,"maxmemory-policy");
|
||||
|
@ -124,7 +124,7 @@ struct redisCommand readonlyCommandTable[] = {
|
||||
{"zcount",zcountCommand,4,0,NULL,1,1,1},
|
||||
{"zrevrange",zrevrangeCommand,-4,0,NULL,1,1,1},
|
||||
{"zcard",zcardCommand,2,0,NULL,1,1,1},
|
||||
{"zscore",zscoreCommand,3,REDIS_CMD_DENYOOM,NULL,1,1,1},
|
||||
{"zscore",zscoreCommand,3,0,NULL,1,1,1},
|
||||
{"zrank",zrankCommand,3,0,NULL,1,1,1},
|
||||
{"zrevrank",zrevrankCommand,3,0,NULL,1,1,1},
|
||||
{"hset",hsetCommand,4,REDIS_CMD_DENYOOM,NULL,1,1,1},
|
||||
@ -1332,6 +1332,8 @@ void monitorCommand(redisClient *c) {
|
||||
void freeMemoryIfNeeded(void) {
|
||||
/* Remove keys accordingly to the active policy as long as we are
|
||||
* over the memory limit. */
|
||||
if (server.maxmemory_policy == REDIS_MAXMEMORY_NO_EVICTION) return;
|
||||
|
||||
while (server.maxmemory && zmalloc_used_memory() > server.maxmemory) {
|
||||
int j, k, freed = 0;
|
||||
|
||||
|
@ -209,6 +209,7 @@
|
||||
#define REDIS_MAXMEMORY_VOLATILE_RANDOM 2
|
||||
#define REDIS_MAXMEMORY_ALLKEYS_LRU 3
|
||||
#define REDIS_MAXMEMORY_ALLKEYS_RANDOM 4
|
||||
#define REDIS_MAXMEMORY_NO_EVICTION 5
|
||||
|
||||
/* We can print the stacktrace, so our assert is defined this way: */
|
||||
#define redisAssert(_e) ((_e)?(void)0 : (_redisAssert(#_e,__FILE__,__LINE__),_exit(1)))
|
||||
|
Reference in New Issue
Block a user