diff --git a/src/object.c b/src/object.c index 96747fa13d165d2605f1363a8d2fc7095e9ddbd3..56528690fa73f82c7e15bd21f5774e45de14e553 100644 --- a/src/object.c +++ b/src/object.c @@ -325,7 +325,11 @@ robj *tryObjectEncoding(robj *o) { * Note that we also avoid using shared integers when maxmemory is used * because every object needs to have a private LRU field for the LRU * algorithm to work well. */ - if (server.maxmemory == 0 && value >= 0 && value < REDIS_SHARED_INTEGERS) { + if ((server.maxmemory == 0 || + (server.maxmemory_policy != REDIS_MAXMEMORY_VOLATILE_LRU && + server.maxmemory_policy != REDIS_MAXMEMORY_ALLKEYS_LRU)) && + value >= 0 && value < REDIS_SHARED_INTEGERS) + { decrRefCount(o); incrRefCount(shared.integers[value]); return shared.integers[value];