转载请注明出处: http://blog.csdn.net/luotuo44/article/details/42672913
本文开始本系列博文的代码分析。本系列博文研究的memcached版本是1.4.21。
本文将给出memcached启动时各个参数的详细解释以及一些关键配置的默认值。以便在分析memcached源码时可以随时查看。当然也方便使用memcached时可以随时查看各个参数的含义。《如何阅读memcached源码》说到memcached有很多全局变量(也就是关键配置),这些全局变量会给源码分析带来一定的困扰。因此在阅读memcached代码时可以假设这些全局变量(关键配置)取默认值,并且其值不会改变。
关键配置的默认值:
很多关键配置变量都是全局结构体变量settings的成员变量。函数settings_init会将这些关键配置变量赋默认值。下面就把这些变量列出来并给予解释。
static void settings_init(void) {
//开启CAS业务,如果开启了那么在item里面就会多一个用于CAS的字段。可以在启动memcached的时候通过-C选项禁用
settings.use_cas = true;
settings.access = 0700; //unix socket的权限位信息
settings.port = 11211;//memcached监听的tcp端口
settings.udpport = 11211;//memcached监听的udp端口
//memcached绑定的ip地址。如果该值为NULL,那么就是INADDR_ANY。否则该值指向一个ip字符串
settings.inter = NULL;
settings.maxbytes = 64 * 1024 * 1024; //memcached能够使用的最大内存
settings.maxconns = 1024; //最多允许多少个客户端同时在线。不同于settings.backlog
settings.verbose = 0;//运行信息的输出级别.该值越大输出的信息就越详细
settings.oldest_live = 0; //flush_all命令的时间界限。插入时间小于这个时间的item删除。
settings.evict_to_free = 1; //标记memcached是否允许LRU淘汰机制。默认是可以的。可以通过-M选项禁止
settings.socketpath = NULL;//unix socket监听的socket路径.默认不使用unix socket
settings.factor = 1.25; //item的扩容因子
settings.chunk_size = 48; //最小的一个item能存储多少字节的数据(set、add命令中的数据)
settings.num_threads = 4; //worker线程的个数
//多少个worker线程为一个udp socket服务 number of worker threads serving each udp socket
settings.num_threads_per_udp = 0;
settings.prefix_delimiter = ':'; //分隔符
settings.de