Commit 13a49af4 authored by antirez's avatar antirez
Browse files

prevent small integer sharing when maxmemory is active. So every object will...

prevent small integer sharing when maxmemory is active. So every object will use a private LRU field and the LRU algorithm can work well
parent 9f8ded8c
......@@ -245,8 +245,12 @@ robj *tryObjectEncoding(robj *o) {
* range and if this is the main thread, since when VM is enabled we
* have the constraint that I/O thread should only handle non-shared
* objects, in order to avoid race conditions (we don't have per-object
* locking). */
if (value >= 0 && value < REDIS_SHARED_INTEGERS &&
* locking).
*
* Note that we also avoid using shared integers when maxmemory is used
* because very 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 &&
pthread_equal(pthread_self(),server.mainthread)) {
decrRefCount(o);
incrRefCount(shared.integers[value]);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment