设为首页 加入收藏

TOP

redis启动过程源码解析(二)
2019-09-17 18:41:58 】 浏览:84
Tags:redis 启动 过程 源码 解析
stCreate();
10 server.monitors = listCreate(); 11 server.clients_pending_write = listCreate(); 12 server.slaveseldb = -1; /* Force to emit the first SELECT command. */ 13 server.unblocked_clients = listCreate(); 14 server.ready_keys = listCreate(); 15 server.clients_waiting_acks = listCreate(); 16 server.get_ack_from_slaves = 0; 17 server.clients_paused = 0; 18 server.system_memory_size = zmalloc_get_memory_size(); 19 //创建常用字符串,比如命令回复pong及命令字符串等 20 createSharedObjects(); 21 //根据配置的最大连接客户端数和CONFIG_MIN_RESERVED_FDS(用于监听、日志文件等文件描述符)设置最大允许打开的文件描述符数 22 adjustOpenFilesLimit(); 23 //初始化aeEventLoop对象并赋值给server中的指针变量el 24 server.el = aeCreateEventLoop(server.maxclients+CONFIG_FDSET_INCR); 25 server.db = zmalloc(sizeof(redisDb)*server.dbnum); 26 27 /* Open the TCP listening socket for the user commands. */ 28 //用于创建监听文件描述符 29 if (server.port != 0 && 30 listenToPort(server.port,server.ipfd,&server.ipfd_count) == C_ERR) 31 exit(1); 32 33 /* Create the Redis databases, and initialize other internal state. */ 34 for (j = 0; j < server.dbnum; j++) { 35 server.db[j].dict = dictCreate(&dbDictType,NULL); 36 server.db[j].expires = dictCreate(&keyptrDictType,NULL); 37 server.db[j].blocking_keys = dictCreate(&keylistDictType,NULL); 38 server.db[j].ready_keys = dictCreate(&objectKeyPointerValueDictType,NULL); 39 server.db[j].watched_keys = dictCreate(&keylistDictType,NULL); 40 server.db[j].id = j; 41 server.db[j].avg_ttl = 0; 42 server.db[j].defrag_later = listCreate(); 43 } 44 //创建lru池,内存超过设置的值时,根据淘汰策略,清除部分key 45 evictionPoolAlloc(); /* Initialize the LRU keys pool. */ 46 server.pubsub_channels = dictCreate(&keylistDictType,NULL); 47 server.pubsub_patterns = listCreate(); 48 listSetFreeMethod(server.pubsub_patterns,freePubsubPattern); 49 listSetMatchMethod(server.pubsub_patterns,listMatchPubsubPattern); 50 server.cronloops = 0; 51 server.rdb_child_pid = -1; 52 server.aof_child_pid = -1; 53 server.rdb_child_type = RDB_CHILD_TYPE_NONE; 54 server.rdb_bgsave_scheduled = 0; 55 server.child_info_pipe[0] = -1; 56 server.child_info_pipe[1] = -1; 57 server.child_info_data.magic = 0; 58 aofRewriteBufferReset(); 59 server.aof_buf = sdsempty(); 60 server.lastsave = time(NULL); /* At startup we consider the DB saved. */ 61 server.lastbgsave_try = 0; /* At startup we never tried to BGSAVE. */ 62 server.rdb_save_time_last = -1; 63 server.rdb_save_time_start = -1; 64 server.dirty = 0; 65 resetServerStats(); 66 /* A few stats we don't want to reset: server startup time, and peak mem. */ 67 server.stat_starttime = time(NULL); 68 server.stat_peak_memory = 0; 69 server.stat_rdb_cow_bytes = 0; 70 server.stat_aof_cow_bytes = 0; 71 server.cron_malloc_stats.zmalloc_used = 0; 72 server.cron_malloc_stats.process_rss = 0; 73 server.cron_malloc_stats.allocator_allocated = 0; 74 server.cron_malloc_stats.allocator_active = 0; 75 server.cron_malloc_stats.allocator_resident = 0; 76 server.lastbgsave_status = C_OK; 77 server.aof_last_write_status = C_OK; 78 server.aof_last_write_errno = 0; 79 server.repl_good_slaves_count = 0; 80 81 /* Create the timer callback, this is our way to process many background 82 * operations incrementally, like clients ti
首页 上一页 1 2 3 4 下一页 尾页 2/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇CentOS7.3安装mysql数据库 下一篇DBA_OBJECTS

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目