Return 1 if used memory is more than maxmemory after allocating more memory, * return 0 if not. Redis may reject user's requests or evict some keys if used * memory exceeds maxmemory, especially, when we allocate huge memory at once. */
| 536 | * return 0 if not. Redis may reject user's requests or evict some keys if used |
| 537 | * memory exceeds maxmemory, especially, when we allocate huge memory at once. */ |
| 538 | int overMaxmemoryAfterAlloc(size_t moremem) { |
| 539 | if (!g_pserver->maxmemory) return 0; /* No limit. */ |
| 540 | |
| 541 | /* Check quickly. */ |
| 542 | size_t mem_used = zmalloc_used_memory(); |
| 543 | if (mem_used + moremem <= g_pserver->maxmemory) return 0; |
| 544 | |
| 545 | size_t overhead = freeMemoryGetNotCountedMemory(); |
| 546 | mem_used = (mem_used > overhead) ? mem_used - overhead : 0; |
| 547 | return mem_used + moremem > g_pserver->maxmemory; |
| 548 | } |
| 549 | |
| 550 | /* The evictionTimeProc is started when "maxmemory" has been breached and |
| 551 | * could not immediately be resolved. This will spin the event loop with short |
no test coverage detected