{"id":357,"date":"2019-10-01T14:51:31","date_gmt":"2019-10-01T06:51:31","guid":{"rendered":"https:\/\/www.ccagml.com\/?p=357"},"modified":"2021-04-26T22:03:20","modified_gmt":"2021-04-26T14:03:20","slug":"redis%e6%ba%90%e7%a0%81%e4%bb%8emain%e5%bc%80%e5%a7%8b1","status":"publish","type":"post","link":"https:\/\/www.ccagml.com\/?p=357","title":{"rendered":"redis\u6e90\u7801\u4ecemain\u5f00\u59cb1"},"content":{"rendered":"\n<p>\u4ecemain\u5f00\u59cb\u6211\u4eec\u6700\u5148\u770b\u5230\u7684\u662f\u521d\u59cb\u5316\u670d\u52a1\u5668\u914d\u7f6einitServerConfig\u65b9\u6cd5,initServerConfig\u7528\u6765\u521d\u59cb\u5316\u9ed8\u8ba4\u914d\u7f6e <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\nvoid initServerConfig()\n{\n    int j;\n\n    \/\/ \u670d\u52a1\u5668\u72b6\u6001\n    getRandomHexChars(server.runid, REDIS_RUN_ID_SIZE); \/\/ \u8bbe\u7f6e\u670d\u52a1\u5668\u7684\u8fd0\u884c\u672c\u670d\u52a1\u5668\u7684 RUN ID\n    server.configfile = NULL;                           \/\/ \u914d\u7f6e\u6587\u4ef6\u7684\u7edd\u5bf9\u8def\u5f84\n    server.hz = REDIS_DEFAULT_HZ;                       \/\/ \u8bbe\u7f6e\u9ed8\u8ba4\u670d\u52a1\u5668\u9891\u7387\n    \/\/ \u4e3a\u8fd0\u884c ID \u52a0\u4e0a\u7ed3\u5c3e\u5b57\u7b26\n    server.runid[REDIS_RUN_ID_SIZE] = '\\0';\n    server.arch_bits = (sizeof(long) == 8) ? 64 : 32; \/\/ \u8bbe\u7f6e\u670d\u52a1\u5668\u662f32\u4f4d\u8fd8\u662f64\u4f4d\n    server.port = REDIS_SERVERPORT;  \/\/ \u9ed8\u8ba4\u7aef\u53e3\u53f7\n    server.tcp_backlog = REDIS_TCP_BACKLOG;  \/\/ \u521b\u5efatcp\u7684\u53c2\u6570\n    server.bindaddr_count = 0;  \/\/ \u7ed1\u5b9a\u5730\u5740\u6570\u91cf\n    server.unixsocket = NULL;\n    server.unixsocketperm = REDIS_DEFAULT_UNIX_SOCKET_PERM;\n    server.ipfd_count = 0; \/\/ \u63cf\u8ff0\u7b26\u6570\u91cf\n    server.sofd = -1;      \/\/ UNIX \u5957\u63a5\u5b57\u6587\u4ef6\u63cf\u8ff0\u7b26\n    server.dbnum = REDIS_DEFAULT_DBNUM; \/\/ \u9ed8\u8ba4\u521b\u5efa\u6570\u636e\u5e93\u6570\n    server.verbosity = REDIS_DEFAULT_VERBOSITY;\n    server.maxidletime = REDIS_MAXIDLETIME; \/\/ \u5ba2\u6237\u7aef\u8d85\u65f6,\u9ed8\u8ba4\u4e0d\u8d85\u65f6\n    server.tcpkeepalive = REDIS_DEFAULT_TCP_KEEPALIVE;\n    server.active_expire_enabled = 1;\n    server.client_max_querybuf_len = REDIS_MAX_QUERYBUF_LEN; \/\/ \u5ba2\u6237\u7aef\u67e5\u8be2\u5927\u5c0f\u9ed8\u8ba41G\n    server.saveparams = NULL;\n    server.loading = 0;  \/\/ \u6b63\u5728\u8f7d\u5165\u672c\u5730\u6587\u4ef6\n    server.logfile = zstrdup(REDIS_DEFAULT_LOGFILE); \/\/ \u65e5\u5fd7\u6587\u4ef6\u5730\u5740\n    server.syslog_enabled = REDIS_DEFAULT_SYSLOG_ENABLED; \/\/syslog\n    server.syslog_ident = zstrdup(REDIS_DEFAULT_SYSLOG_IDENT);\n    server.syslog_facility = LOG_LOCAL0;\n    server.daemonize = REDIS_DEFAULT_DAEMONIZE; \/\/ \u662f\u4e0d\u662f\u5b88\u62a4\u8fdb\u7a0b\n    server.aof_state = REDIS_AOF_OFF;  \/\/ aof\u6301\u4e45\u5316\u76f8\u5173\u914d\u7f6e\n    server.aof_fsync = REDIS_DEFAULT_AOF_FSYNC;\n    server.aof_no_fsync_on_rewrite = REDIS_DEFAULT_AOF_NO_FSYNC_ON_REWRITE;\n    server.aof_rewrite_perc = REDIS_AOF_REWRITE_PERC;\n    server.aof_rewrite_min_size = REDIS_AOF_REWRITE_MIN_SIZE;\n    server.aof_rewrite_base_size = 0;\n    server.aof_rewrite_scheduled = 0;\n    server.aof_last_fsync = time(NULL);\n    server.aof_rewrite_time_last = -1;\n    server.aof_rewrite_time_start = -1;\n    server.aof_lastbgrewrite_status = REDIS_OK;\n    server.aof_delayed_fsync = 0;\n    server.aof_fd = -1;\n    server.aof_selected_db = -1; \/* Make sure the first time will not match *\/\n    server.aof_flush_postponed_start = 0;\n    server.aof_rewrite_incremental_fsync = REDIS_DEFAULT_AOF_REWRITE_INCREMENTAL_FSYNC;\n    server.pidfile = zstrdup(REDIS_DEFAULT_PID_FILE);\n    server.rdb_filename = zstrdup(REDIS_DEFAULT_RDB_FILENAME); \/\/ rdb\u6301\u4e45\u5316\u7684\u6587\u4ef6\u540d\n    server.aof_filename = zstrdup(REDIS_DEFAULT_AOF_FILENAME); \/\/ aof\u6301\u4e45\u5316\u7684\u6587\u4ef6\u540d\n    server.requirepass = NULL;  \/\/ \u8ba4\u8bc1\n    server.rdb_compression = REDIS_DEFAULT_RDB_COMPRESSION; \/\/ rdb\u4f7f\u7528lzf\u538b\u7f29\n    server.rdb_checksum = REDIS_DEFAULT_RDB_CHECKSUM;\n    server.stop_writes_on_bgsave_err = REDIS_DEFAULT_STOP_WRITES_ON_BGSAVE_ERROR;\n    server.activerehashing = REDIS_DEFAULT_ACTIVE_REHASHING;  \/\/ \u6e10\u8fdb\u5f0f\u91cd\u7b97\u54c8\u5e0c\n    server.notify_keyspace_events = 0;\n    server.maxclients = REDIS_MAX_CLIENTS;  \/\/ \u6700\u5927\u5ba2\u6237\u7aef\u6570,\u9ed8\u8ba410000\n    server.bpop_blocked_clients = 0;\n    server.maxmemory = REDIS_DEFAULT_MAXMEMORY; \/\/ \u6700\u5927\u5185\u5b58\u4f7f\u7528\n    server.maxmemory_policy = REDIS_DEFAULT_MAXMEMORY_POLICY; \/\/ \u6dd8\u6c70\u7b56\u7565,\u9ed8\u8ba4\u4e0d\u80fd\u5199\u5c31\u62a5\u9519\n    server.maxmemory_samples = REDIS_DEFAULT_MAXMEMORY_SAMPLES;\n    server.hash_max_ziplist_entries = REDIS_HASH_MAX_ZIPLIST_ENTRIES; \/\/ \u8868\u793a\u54c8\u5e0c\u7c7b\u578b\u5bf9\u8c61\u4e2d\u538b\u7f29\u5217\u8868\u8282\u70b9\u7684\u6700\u5927\u6570\u91cf\n    server.hash_max_ziplist_value = REDIS_HASH_MAX_ZIPLIST_VALUE;     \/\/\u8868\u793a\u54c8\u5e0c\u7c7b\u578b\u5bf9\u8c61\u4e2d\u538b\u7f29\u5217\u8868\u8282\u70b9\u7684\u6700\u5927\u957f\u5ea6\n    server.list_max_ziplist_entries = REDIS_LIST_MAX_ZIPLIST_ENTRIES;\n    server.list_max_ziplist_value = REDIS_LIST_MAX_ZIPLIST_VALUE;\n    server.set_max_intset_entries = REDIS_SET_MAX_INTSET_ENTRIES;\n    server.zset_max_ziplist_entries = REDIS_ZSET_MAX_ZIPLIST_ENTRIES;\n    server.zset_max_ziplist_value = REDIS_ZSET_MAX_ZIPLIST_VALUE;\n    server.hll_sparse_max_bytes = REDIS_DEFAULT_HLL_SPARSE_MAX_BYTES; \/\/  HyperLogLog\u7edf\u8ba1\u76f8\u5173\n    server.shutdown_asap = 0; \/\/\u5173\u95ed\u6807\u8bc6\n    server.repl_ping_slave_period = REDIS_REPL_PING_SLAVE_PERIOD;\n    server.repl_timeout = REDIS_REPL_TIMEOUT;\n    server.repl_min_slaves_to_write = REDIS_DEFAULT_MIN_SLAVES_TO_WRITE;\n    server.repl_min_slaves_max_lag = REDIS_DEFAULT_MIN_SLAVES_MAX_LAG;\n    server.cluster_enabled = 0; \/\/ \u5206\u5e03\u5f0f\u96c6\u7fa4\n    server.cluster_node_timeout = REDIS_CLUSTER_DEFAULT_NODE_TIMEOUT;\n    server.cluster_migration_barrier = REDIS_CLUSTER_DEFAULT_MIGRATION_BARRIER;\n    server.cluster_configfile = zstrdup(REDIS_DEFAULT_CLUSTER_CONFIG_FILE);\n    server.lua_caller = NULL;\n    server.lua_time_limit = REDIS_LUA_TIME_LIMIT; \/\/ lua\u6267\u884c\u9650\u52365\u79d2\n    server.lua_client = NULL;  \/\/ \u4e00\u4e2a\u6267\u884c\u547d\u4ee4\u7684\u5ba2\u6237\u7aef\n    server.lua_timedout = 0;\n    server.migrate_cached_sockets = dictCreate(&amp;migrateCacheDictType, NULL); \/\/ \u5957\u63a5\u5b57\u7f13\u5b58\u5b57\u5178\n    server.loading_process_events_interval_bytes = (1024 * 1024 * 2);\n\n    \/\/ \u521d\u59cb\u5316 LRU \u65f6\u95f4\n    server.lruclock = getLRUClock();\n\n    \/\/ \u521d\u59cb\u5316\u5e76\u8bbe\u7f6e\u4fdd\u5b58\u6761\u4ef6\n    resetServerSaveParams();\n\n    appendServerSaveParams(60 * 60, 1); \/* save after 1 hour and 1 change *\/\n    appendServerSaveParams(300, 100);   \/* save after 5 minutes and 100 changes *\/\n    appendServerSaveParams(60, 10000);  \/* save after 1 minute and 10000 changes *\/\n\n    \/* Replication related *\/\n    \/\/ \u521d\u59cb\u5316\u548c\u590d\u5236\u76f8\u5173\u7684\u72b6\u6001\n    server.masterauth = NULL;\n    server.masterhost = NULL;\n    server.masterport = 6379;\n    server.master = NULL;\n    server.cached_master = NULL;\n    server.repl_master_initial_offset = -1;\n    server.repl_state = REDIS_REPL_NONE;\n    server.repl_syncio_timeout = REDIS_REPL_SYNCIO_TIMEOUT;\n    server.repl_serve_stale_data = REDIS_DEFAULT_SLAVE_SERVE_STALE_DATA;\n    server.repl_slave_ro = REDIS_DEFAULT_SLAVE_READ_ONLY;\n    server.repl_down_since = 0; \/* Never connected, repl is down since EVER. *\/\n    server.repl_disable_tcp_nodelay = REDIS_DEFAULT_REPL_DISABLE_TCP_NODELAY;\n    server.slave_priority = REDIS_DEFAULT_SLAVE_PRIORITY;\n    server.master_repl_offset = 0;\n\n    \/* Replication partial resync backlog *\/\n    \/\/ \u521d\u59cb\u5316 PSYNC \u547d\u4ee4\u6240\u4f7f\u7528\u7684 backlog\n    server.repl_backlog = NULL;\n    server.repl_backlog_size = REDIS_DEFAULT_REPL_BACKLOG_SIZE;\n    server.repl_backlog_histlen = 0;\n    server.repl_backlog_idx = 0;\n    server.repl_backlog_off = 0;\n    server.repl_backlog_time_limit = REDIS_DEFAULT_REPL_BACKLOG_TIME_LIMIT;\n    server.repl_no_slaves_since = time(NULL);\n\n    \/* Client output buffer limits *\/\n    \/\/ \u8bbe\u7f6e\u5ba2\u6237\u7aef\u7684\u8f93\u51fa\u7f13\u51b2\u533a\u9650\u5236\n    for (j = 0; j &lt; REDIS_CLIENT_LIMIT_NUM_CLASSES; j++)\n        server.client_obuf_limits[j] = clientBufferLimitsDefaults[j];\n\n    \/* Double constants initialization *\/\n    \/\/ \u521d\u59cb\u5316\u6d6e\u70b9\u5e38\u91cf\n    R_Zero = 0.0;\n    R_PosInf = 1.0 \/ R_Zero;\n    R_NegInf = -1.0 \/ R_Zero;\n    R_Nan = R_Zero \/ R_Zero;\n\n    \/* Command table -- we initiialize it here as it is part of the\n     * initial configuration, since command names may be changed via\n     * redis.conf using the rename-command directive. *\/\n    \/\/ \u521d\u59cb\u5316\u547d\u4ee4\u8868\n    \/\/ \u5728\u8fd9\u91cc\u521d\u59cb\u5316\u662f\u56e0\u4e3a\u63a5\u4e0b\u6765\u8bfb\u53d6 .conf \u6587\u4ef6\u65f6\u53ef\u80fd\u4f1a\u7528\u5230\u8fd9\u4e9b\u547d\u4ee4\n    server.commands = dictCreate(&amp;commandTableDictType, NULL);\n    server.orig_commands = dictCreate(&amp;commandTableDictType, NULL);\n    populateCommandTable();\n    server.delCommand = lookupCommandByCString(\"del\");\n    server.multiCommand = lookupCommandByCString(\"multi\");\n    server.lpushCommand = lookupCommandByCString(\"lpush\");\n    server.lpopCommand = lookupCommandByCString(\"lpop\");\n    server.rpopCommand = lookupCommandByCString(\"rpop\");\n\n    \/* Slow log *\/\n    \/\/ \u521d\u59cb\u5316\u6162\u67e5\u8be2\u65e5\u5fd7\n    server.slowlog_log_slower_than = REDIS_SLOWLOG_LOG_SLOWER_THAN;\n    server.slowlog_max_len = REDIS_SLOWLOG_MAX_LEN;\n\n    \/* Debugging *\/\n    \/\/ \u521d\u59cb\u5316\u8c03\u8bd5\u9879\n    server.assert_failed = \"&lt;no assertion failed>\";\n    server.assert_file = \"&lt;no file>\";\n    server.assert_line = 0;\n    server.bug_report_start = 0;\n    server.watchdog_period = 0;\n}<\/code><\/pre>\n\n\n\n<p><a href=\"https:\/\/download.redis.io\/releases\/redis-3.0.0.tar.gz\" target=\"_blank\" rel=\"noopener\">\u57fa\u4e8e\u7248\u672c3.0.0\u7248\u672c,<\/a>\u70b9\u51fb\u4e0b\u8f7dhttps:\/\/download.redis.io\/releases\/redis-3.0.0.tar.gz<\/p>\n\n\n\n<p><a href=\"https:\/\/www.ccagml.com\/?p=357\">\u672c\u6587\u5730\u5740<\/a>\uff0chttps:\/\/www.ccagml.com\/?p=357<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4ecemain\u5f00\u59cb\u6211\u4eec\u6700\u5148\u770b\u5230\u7684\u662f\u521d\u59cb\u5316\u670d\u52a1\u5668\u914d\u7f6einitServerConfig\u65b9\u6cd5,initServerCon<a href=\"https:\/\/www.ccagml.com\/?p=357\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">redis\u6e90\u7801\u4ecemain\u5f00\u59cb1<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[31,22],"tags":[],"_links":{"self":[{"href":"https:\/\/www.ccagml.com\/index.php?rest_route=\/wp\/v2\/posts\/357"}],"collection":[{"href":"https:\/\/www.ccagml.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ccagml.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ccagml.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ccagml.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=357"}],"version-history":[{"count":7,"href":"https:\/\/www.ccagml.com\/index.php?rest_route=\/wp\/v2\/posts\/357\/revisions"}],"predecessor-version":[{"id":374,"href":"https:\/\/www.ccagml.com\/index.php?rest_route=\/wp\/v2\/posts\/357\/revisions\/374"}],"wp:attachment":[{"href":"https:\/\/www.ccagml.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=357"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ccagml.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=357"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ccagml.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=357"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}