mirror of
https://github.com/fluencelabs/redis
synced 2025-03-19 09:00:51 +00:00
Move Redis databases background processing to databasesCron().
This commit is contained in:
parent
f0b807cd47
commit
cd9dcd1835
37
src/redis.c
37
src/redis.c
@ -819,6 +819,27 @@ void clientsCron(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* This function handles 'background' operations we are required to do
|
||||||
|
* incrementally in Redis databases, such as active key expiring, resizing,
|
||||||
|
* rehashing. */
|
||||||
|
void databasesCron(void) {
|
||||||
|
/* Expire a few keys per cycle, only if this is a master.
|
||||||
|
* On slaves we wait for DEL operations synthesized by the master
|
||||||
|
* in order to guarantee a strict consistency. */
|
||||||
|
if (server.masterhost == NULL) activeExpireCycle();
|
||||||
|
|
||||||
|
/* We don't want to resize the hash tables while a background saving
|
||||||
|
* is in progress: the saving child is created using fork() that is
|
||||||
|
* implemented with a copy-on-write semantic in most modern systems, so
|
||||||
|
* if we resize the HT while there is the saving child at work actually
|
||||||
|
* a lot of memory movements in the parent will cause a lot of pages
|
||||||
|
* copied. */
|
||||||
|
if (server.rdb_child_pid == -1 && server.aof_child_pid == -1) {
|
||||||
|
tryResizeHashTables();
|
||||||
|
if (server.activerehashing) incrementallyRehash();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* This is our timer interrupt, called server.hz times per second.
|
/* This is our timer interrupt, called server.hz times per second.
|
||||||
* Here is where we do a number of things that need to be done asynchronously.
|
* Here is where we do a number of things that need to be done asynchronously.
|
||||||
* For instance:
|
* For instance:
|
||||||
@ -897,17 +918,6 @@ int serverCron(struct aeEventLoop *eventLoop, long long id, void *clientData) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We don't want to resize the hash tables while a background saving
|
|
||||||
* is in progress: the saving child is created using fork() that is
|
|
||||||
* implemented with a copy-on-write semantic in most modern systems, so
|
|
||||||
* if we resize the HT while there is the saving child at work actually
|
|
||||||
* a lot of memory movements in the parent will cause a lot of pages
|
|
||||||
* copied. */
|
|
||||||
if (server.rdb_child_pid == -1 && server.aof_child_pid == -1) {
|
|
||||||
tryResizeHashTables();
|
|
||||||
if (server.activerehashing) incrementallyRehash();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Show information about connected clients */
|
/* Show information about connected clients */
|
||||||
if (!server.sentinel_mode) {
|
if (!server.sentinel_mode) {
|
||||||
run_with_period(5000) {
|
run_with_period(5000) {
|
||||||
@ -988,11 +998,6 @@ int serverCron(struct aeEventLoop *eventLoop, long long id, void *clientData) {
|
|||||||
* cron function is called. */
|
* cron function is called. */
|
||||||
if (server.aof_flush_postponed_start) flushAppendOnlyFile(0);
|
if (server.aof_flush_postponed_start) flushAppendOnlyFile(0);
|
||||||
|
|
||||||
/* Expire a few keys per cycle, only if this is a master.
|
|
||||||
* On slaves we wait for DEL operations synthesized by the master
|
|
||||||
* in order to guarantee a strict consistency. */
|
|
||||||
if (server.masterhost == NULL) activeExpireCycle();
|
|
||||||
|
|
||||||
/* Close clients that need to be closed asynchronous */
|
/* Close clients that need to be closed asynchronous */
|
||||||
freeClientsInAsyncFreeQueue();
|
freeClientsInAsyncFreeQueue();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user