redis 到底有几个线程

redis5.0 是 4 个,废话少说,上源码
initServer();
/* Ready to spawn our threads. We use the single argument the thread
 * function accepts in order to pass the job ID the thread is
 * responsible of. */
for (j = 0; j < BIO_NUM_OPS; j++) {
    void *arg = (void*)(unsigned long) j;
    if (pthread_create(&thread,&attr,bioProcessBackgroundJobs,arg) != 0) {
        serverLog(LL_WARNING,"Fatal: Can't initialize Background Jobs.");
        exit(1);
    }
    bio_threads[j] = thread;
}
/* Background job opcodes */
#define BIO_CLOSE_FILE    0 /* Deferred close(2) syscall. */
#define BIO_AOF_FSYNC     1 /* Deferred AOF fsync. */
#define BIO_LAZY_FREE     2 /* Deferred objects freeing. */
#define BIO_NUM_OPS       3 // 线程总数,redis主线程+3个后台线程

之所以redis是单线程其实是处理客户端请求的是单线程,但还有后台线程去处理aof,rdb等耗时的任务。

 

redis 到底有几个线程_第1张图片

把后台线程改成2看看看一下,总线程数变成3个了

redis 到底有几个线程_第2张图片

redis 到底有几个线程_第3张图片

 

你可能感兴趣的:(redis,redis)