提交 13a49af4 编写于 作者: A antirez

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
上级 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% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册