<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Memcache on Dapeng Zhang</title><link>https://zhangdapeng.dev/tags/memcache/</link><description>Recent content in Memcache on Dapeng Zhang</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Mon, 09 Jun 2025 16:40:31 +0000</lastBuildDate><atom:link href="https://zhangdapeng.dev/tags/memcache/index.xml" rel="self" type="application/rss+xml"/><item><title>Memcache-PHP中操作Memcache</title><link>https://zhangdapeng.dev/p/memcache-php-zhong-cao-zuo-memcache/</link><pubDate>Mon, 09 Jun 2025 16:40:31 +0000</pubDate><guid>https://zhangdapeng.dev/p/memcache-php-zhong-cao-zuo-memcache/</guid><description>&lt;h3 id="简介"&gt;&lt;a class="link" href="#1" &gt;简介&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;memcache模块是一个高效的守护进程，提供用于内存缓存的过程式程序和面向对象的方便的接口，特别是对于设计动态web程序时减少对数据库的访问。&lt;/p&gt;
&lt;p&gt;memcache也提供用于通信对话（session_handler）的处理。&lt;/p&gt;
&lt;p&gt;更多Memcache 模块相关信息可以到 &lt;a class="link" href="http://www.danga.com/memcached/" target="_blank" rel="noopener"
 &gt;http://www.danga.com/memcached/&lt;/a&gt; 查阅。&lt;/p&gt;
&lt;h4 id="memcache在phpini中的配置项列表"&gt;&lt;a class="link" href="#1-1" &gt;memcache在php.ini中的配置项列表&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;memcache在php.ini中的配置项列表&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;名称&lt;/th&gt;
					&lt;th&gt;默认值&lt;/th&gt;
					&lt;th&gt;是否可变&lt;/th&gt;
					&lt;th&gt;改变日志&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;memcache.allow_failover&lt;/td&gt;
					&lt;td&gt;“1”&lt;/td&gt;
					&lt;td&gt;PHP_INI_ALL&lt;/td&gt;
					&lt;td&gt;Available since memcache 2.0.2.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;memcache.max_failover_attempts&lt;/td&gt;
					&lt;td&gt;&amp;ldquo;20&amp;rdquo;&lt;/td&gt;
					&lt;td&gt;PHP_INI_ALL&lt;/td&gt;
					&lt;td&gt;Available since memcache 2.1.0.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;memcache.chunk_size&lt;/td&gt;
					&lt;td&gt;&amp;ldquo;8192&amp;rdquo;&lt;/td&gt;
					&lt;td&gt;PHP_INI_ALL&lt;/td&gt;
					&lt;td&gt;Available since memcache 2.0.2.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;memcache.default_port&lt;/td&gt;
					&lt;td&gt;&amp;ldquo;11211&amp;rdquo;&lt;/td&gt;
					&lt;td&gt;PHP_INI_ALL&lt;/td&gt;
					&lt;td&gt;Available since memcache 2.0.2.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;memcache.hash_strategy&lt;/td&gt;
					&lt;td&gt;&amp;ldquo;standard&amp;rdquo;&lt;/td&gt;
					&lt;td&gt;PHP_INI_ALL&lt;/td&gt;
					&lt;td&gt;Available since memcache 2.2.0.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;memcache.hash_function&lt;/td&gt;
					&lt;td&gt;&amp;ldquo;crc32&amp;rdquo;&lt;/td&gt;
					&lt;td&gt;PHP_INI_ALL&lt;/td&gt;
					&lt;td&gt;Available since memcache 2.2.0.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;session.save_handler&lt;/td&gt;
					&lt;td&gt;&amp;ldquo;files&amp;rdquo;&lt;/td&gt;
					&lt;td&gt;PHP_INI_ALL&lt;/td&gt;
					&lt;td&gt;Supported since memcache 2.1.2&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;session.save_path&lt;/td&gt;
					&lt;td&gt;&amp;quot;&amp;quot;&lt;/td&gt;
					&lt;td&gt;PHP_INI_ALL&lt;/td&gt;
					&lt;td&gt;Supported since memcache 2.1.2&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;有关 PHP_INI_* 常量进一步的细节与定义参见PHP手册php.ini 配置选项。&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id="以下是配置项的简要解释"&gt;&lt;a class="link" href="#1-2" &gt;以下是配置项的简要解释&lt;/a&gt;
&lt;/h4&gt;
 &lt;blockquote&gt;
 &lt;p&gt;memcache.allow_failover Boolean&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;在错误时是否透明的故障转移到其他服务器上处理（注：故障转移是动词）。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;memcache.max_failover_attempts integer&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;定义服务器的数量类设置和获取数据，只联合 memcache.allow_failover 一同使用。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;memcache.chunk_size integer&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;数据将会被分成指定大小（chunk_size）的块来传输，这个值（chunk_size）越小，写操作的请求就越多，如果发现其他的无法解释的减速，请试着将这个值增大到32768.&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;memcache.default_port string&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;当连接memcache服务器的时候，如果没有指定端口这个默认的tcp端口将被用。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;memcache.hash_strategy string&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;控制在映射 key 到服务器时使用哪种策略。设置这个值一致能使hash 算法始终如一的使用于服务器接受添加或者删除池中变量时将不会被重新映射。设置这个值以标准的结果在旧的策略被使用时。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;memcache.hash_function string&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;控制哪种 hsah 函数被应用于 key映射 到服务器过程中，默认值“crc32”使用 CRC32 算法，而“fnv”则表示使用 FNV-1a 算法。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;session.save_handler string&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;通过设置这个值为memcache来确定使用 memcache 用于通信对话的处理（session handler）。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;session.save_path string&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;定义用于通话存储的各服务器链接的分隔符号，例如：“tcp://host1:11211, tcp://host2:11211”。
每 服务器个链接可以包含被接受于该服务器的参数，比较类似使用 Memcache::addServer() 来添加的服务器，例如：“tcp://host1:11211?persistent=1&amp;amp;weight=1&amp;amp;timeout=1&amp;amp; amp; amp;retry_interval=15”。&lt;/p&gt;
&lt;h4 id="memcache常量列表"&gt;&lt;a class="link" href="#1-3" &gt;memcache常量列表&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;memcache常量列表&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;名称&lt;/th&gt;
					&lt;th&gt;类型&lt;/th&gt;
					&lt;th&gt;描述&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;MEMCACHE_COMPRESSED&lt;/td&gt;
					&lt;td&gt;integer&lt;/td&gt;
					&lt;td&gt;用于调整在使用 Memcache::set(), Memcache::add() 和 Memcache::replace() 几个函数时的压缩比率。&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;MEMCACHE_HAVE_SESSION&lt;/td&gt;
					&lt;td&gt;integer&lt;/td&gt;
					&lt;td&gt;如果通信对话的处理（session handler）被允许使用其值为 1，其他情况值为 0。&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="memcache-functions-函数列表"&gt;&lt;a class="link" href="#2" &gt;Memcache Functions 函数列表&lt;/a&gt;
&lt;/h3&gt;&lt;h4 id="memcacheconnect"&gt;&lt;a class="link" href="#2-1" &gt;Memcache::connect&lt;/a&gt;
&lt;/h4&gt;&lt;h5 id="说明"&gt;&lt;a class="link" href="#2-1-1" &gt;说明&lt;/a&gt;
&lt;/h5&gt;
 &lt;blockquote&gt;
 &lt;p&gt;bool Memcache::connect ( string $host [, int $port [, int $timeout ]] )&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;连接memcache服务器&lt;/p&gt;
&lt;h5 id="参数"&gt;&lt;a class="link" href="#2-1-2" &gt;参数&lt;/a&gt;
&lt;/h5&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;-&lt;/th&gt;
					&lt;th&gt;-&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;$host(string)&lt;/td&gt;
					&lt;td&gt;服务器域名或ip&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;$port(int)&lt;/td&gt;
					&lt;td&gt;服务器tcp端口号，默认值是11211&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;$timeout&lt;/td&gt;
					&lt;td&gt;连接memcache进程的失效时间，在修改它的默认值1的时候要三思，以免失去所有memcache缓存的优势导致连接变得很慢。&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="返回值"&gt;&lt;a class="link" href="#2-1-3" &gt;返回值&lt;/a&gt;
&lt;/h5&gt;&lt;p&gt;如果成功则返回true，失败则返回false&lt;/p&gt;
&lt;h5 id="范例"&gt;&lt;a class="link" href="#2-1-4" &gt;范例&lt;/a&gt;
&lt;/h5&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* procedural API */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;memcache_connect&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* OO API */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Memcache&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;connect&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="memcachepconnect"&gt;&lt;a class="link" href="#2-2" &gt;Memcache::pconnect&lt;/a&gt;
&lt;/h4&gt;&lt;h5 id="说明-1"&gt;&lt;a class="link" href="#2-2-1" &gt;说明&lt;/a&gt;
&lt;/h5&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;code&gt;bool Memcache::pconnect ( string $host [, int $port [, int $timeout ]] )&lt;/code&gt;以长连接方式连接服务器&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h5 id="参数-1"&gt;&lt;a class="link" href="#2-2-2" &gt;参数&lt;/a&gt;
&lt;/h5&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;-&lt;/th&gt;
					&lt;th&gt;-&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;$host(string)&lt;/td&gt;
					&lt;td&gt;服务器域名或ip&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;$port(int)&lt;/td&gt;
					&lt;td&gt;服务器tcp端口号，默认值是11211&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;$timeout&lt;/td&gt;
					&lt;td&gt;连接memcache进程的失效时间，在修改它的默认值1的时候要三思，以免失去所有memcache缓存的优势导致连接变得很慢。&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="返回值-1"&gt;&lt;a class="link" href="#2-2-3" &gt;返回值&lt;/a&gt;
&lt;/h5&gt;&lt;p&gt;如果成功则返回true，失败则返回false&lt;/p&gt;
&lt;h5 id="范例-1"&gt;&lt;a class="link" href="#2-2-4" &gt;范例&lt;/a&gt;
&lt;/h5&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* procedural API */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;memcache_pconnect&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* OO API */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Memcache&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;pconnect&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="memcacheclose"&gt;&lt;a class="link" href="#2-3" &gt;Memcache::close&lt;/a&gt;
&lt;/h4&gt;&lt;h5 id="说明-2"&gt;&lt;a class="link" href="#2-3-0" &gt;说明&lt;/a&gt;
&lt;/h5&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;code&gt;bool Memcache::close ( void )&lt;/code&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;关闭对象 (对常连接不起作用)&lt;/p&gt;
&lt;h5 id="返回值-2"&gt;&lt;a class="link" href="#2-3-1" &gt;返回值&lt;/a&gt;
&lt;/h5&gt;&lt;p&gt;如果成功则返回true，失败则返回false&lt;/p&gt;
&lt;h5 id="范例-2"&gt;&lt;a class="link" href="#2-3-2" &gt;范例&lt;/a&gt;
&lt;/h5&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* procedural API */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;memcache_connect&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* do something here .. */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;memcache_close&lt;/span&gt;($memcache_obj);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* OO API */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Memcache&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;connect&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* do something here .. */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;close&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="memcacheaddserver2-4"&gt;Memcache::addServer(#2-4)
&lt;/h4&gt;&lt;h5 id="说明-3"&gt;&lt;a class="link" href="#2-4-1" &gt;说明&lt;/a&gt;
&lt;/h5&gt;
 &lt;blockquote&gt;
 &lt;p&gt;bool Memcache::addServer ( string $host [, int $port [, bool $persistent [, int $weight [, int $timeout [, int $retry_interval [, bool $status [, callback $failure_callback ]]]]]]] )
向对象添加一个服务器（注：addServer没有连接到服务器的动作，所以在memcache进程没有启动的时候，执行addServer成功也会返回true）&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h5 id="参数-2"&gt;&lt;a class="link" href="#2-4-2" &gt;参数&lt;/a&gt;
&lt;/h5&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;-&lt;/th&gt;
					&lt;th&gt;-&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;host&lt;/td&gt;
					&lt;td&gt;服务器域名或 IP&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;port&lt;/td&gt;
					&lt;td&gt;端口号，默认为 11211&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;persistent&lt;/td&gt;
					&lt;td&gt;是否使用常连接，默认为 TRUE&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;weight&lt;/td&gt;
					&lt;td&gt;权重，在多个服务器设置中占的比重&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;timeout&lt;/td&gt;
					&lt;td&gt;连接服务器失效的秒数，修改默认值 1 时要三思，有可能失去所有缓存方面的优势导致连接变得很慢&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;retry_interval&lt;/td&gt;
					&lt;td&gt;服务器连接失败时的重试频率，默认是 15 秒一次，如果设置为 -1 将禁止自动重试，当扩展中加载了 dynamically via dl() 时，无论本参数还是常连接设置参数都会失效。&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;每一个失败的服务器在失效前都有独自的生存期，选择后端请求时会被跳过而不服务于请求。一个过期的连接将成功的重新连接或者被标记为失败的连接等待下一次 重试。这种效果就是说每一个 web server 的子进程在服务于页面时的重试连接都跟他们自己的重试频率有关。&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;status&lt;/td&gt;
					&lt;td&gt;控制服务器是否被标记为 online，设置这个参数为 FALSE 并设置 retry_interval 为 -1 可以使连接失败的服务器被放到一个描述不响应请求的服务器池子中，对这个服务器的请求将失败，接受设置为失败服务器的设置，默认参数为 TRUE，代表该服务器可以被定义为 online。&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;failure_callback&lt;/td&gt;
					&lt;td&gt;失败时的回调函数，函数的两个参数为失败服务器的 hostname 和 port&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="返回值-3"&gt;&lt;a class="link" href="#2-4-3" &gt;返回值&lt;/a&gt;
&lt;/h5&gt;&lt;p&gt;成功返回 TRUE，失败返回 FALSE。
注：在测试addServer函数的时候我们主要测试了其参数retry_interval和status&lt;/p&gt;
&lt;h5 id="范例-3"&gt;&lt;a class="link" href="#2-4-4" &gt;范例&lt;/a&gt;
&lt;/h5&gt;&lt;h6 id="retry_"&gt;&lt;a class="link" href="#2-4-4-1" &gt;retry_interval参数的测试&lt;/a&gt;
&lt;/h6&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$mem &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Memcache&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$is_add &lt;span style="color:#f92672"&gt;=&lt;/span&gt; $mem&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;addServer&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘localhost‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;, &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;15&lt;/span&gt;, &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;); &lt;span style="color:#75715e"&gt;// retrt_interval=15
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$is_set &lt;span style="color:#f92672"&gt;=&lt;/span&gt; $mem&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;set&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘key1‘&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;‘中华人民共和国‘&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;上面的例子中如果localhost服务器down掉或是memcache守护进程当掉，执行请求的时候连接服务器失败时算起15秒后会自动重试连 接服务器，但是在这15秒内不会去连接这个服务器，就是只要有请求，没15秒就会尝试连接服务器，但是每个服务器连接重试是独立的。比如说我一次添加了两 个服务器一个是localhost，一个是172.16.100.60，它们分别是从各自连接失败那个时间算起，只要对各自服务器有请求就会每隔15秒去 连接各自的服务器的。&lt;/p&gt;
&lt;h6 id="retry_-1"&gt;&lt;a class="link" href="#2-4-4-2" &gt;retry_interval和status结合使用的情况&lt;/a&gt;
&lt;/h6&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;php&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$mem &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Memcache&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$is_add &lt;span style="color:#f92672"&gt;=&lt;/span&gt; $mem&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;addServer&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘localhost‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;, &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;); &lt;span style="color:#75715e"&gt;// retrt_interval=-1, status=false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$is_set &lt;span style="color:#f92672"&gt;=&lt;/span&gt; $mem&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;set&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘key1‘&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;‘中华人民共和国‘&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;?&amp;gt;&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;在上面的retrt_interval=-1, status=false这种情况下，将连接失败的服务器放到一个不响应请求的一个池子中，因此对key分配的算法也就没有影响了，而他是立即返回错误失败还是故障转移还要看memcache.allow_failover的设置，执行set， add， replace，get等请求的时候都会失败返回false，即使memcache进程运行正常。&lt;/p&gt;
&lt;h6 id="status参数的测试"&gt;&lt;a class="link" href="#2-4-4-3" &gt;status参数的测试&lt;/a&gt;
&lt;/h6&gt;&lt;p&gt;除了与retry_interval结合使用，status单独使用的情况会对函数memcache::getServerStatu获得的结果产生影响
无论memcache进程的正常运行还是当掉，status为true的时候getServerStatus的结果都是true，反之则为false
但是在memcache进程正常运行的情况下，对set，add，replace，get等函数都没有影响。&lt;/p&gt;
&lt;h4 id="memcacheadd"&gt;&lt;a class="link" href="#2-5" &gt;Memcache::add&lt;/a&gt;
&lt;/h4&gt;&lt;h5 id="说明-4"&gt;&lt;a class="link" href="#2-5-1" &gt;说明&lt;/a&gt;
&lt;/h5&gt;
 &lt;blockquote&gt;
 &lt;p&gt;bool Memcache::add ( string $key , mixed $var [, int $flag [, int $expire ]] )
添加一个要缓存的数据如果作为这个缓存的数据的键在服务器上还不存在的情况下,&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h5 id="参数-3"&gt;&lt;a class="link" href="#2-5-2" &gt;参数&lt;/a&gt;
&lt;/h5&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;-&lt;/th&gt;
					&lt;th&gt;-&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;key&lt;/td&gt;
					&lt;td&gt;缓存数据的键 其长度不能超过250个字符&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;var&lt;/td&gt;
					&lt;td&gt;值，整型将直接存储，其他类型将被序列化存储 ，其值最大为1M&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;flag&lt;/td&gt;
					&lt;td&gt;是否使用 zlib 压缩 ,当flag=MEMCACHE_COMPRESSED的时侯，数据很小的时候不会采用zlib压缩，只有数据达到一定大小才对数据进行zlib压缩。（没有具体的测试数据进行压缩的最小值是多少）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;expire&lt;/td&gt;
					&lt;td&gt;过期时间，0 为永不过期，可使用 unix 时间戳格式或距离当前时间的秒数，设为秒数时不能大于 2592000（30 天）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="返回值-4"&gt;&lt;a class="link" href="#2-5-3" &gt;返回值&lt;/a&gt;
&lt;/h5&gt;&lt;p&gt;成功返回 TRUE，失败返回 FALSE，如果这个键已经存在，其他方面memcache:;add()的行为与memcache::set相似&lt;/p&gt;
&lt;h5 id="范例-4"&gt;&lt;a class="link" href="#2-5-4" &gt;范例&lt;/a&gt;
&lt;/h5&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;php&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;memcache_connect&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;localhost&amp;#34;&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* procedural API */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;memcache_add&lt;/span&gt;($memcache_obj, &lt;span style="color:#a6e22e"&gt;‘var_key‘&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;‘test&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;variable‘&lt;/span&gt;, &lt;span style="color:#66d9ef"&gt;FALSE&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;30&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* OO API */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;add&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘var_key‘&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;‘test&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;variable‘&lt;/span&gt;, &lt;span style="color:#66d9ef"&gt;FALSE&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;30&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;?&amp;gt;&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="memcachereplace"&gt;&lt;a class="link" href="#2-6" &gt;Memcache::replace&lt;/a&gt;
&lt;/h4&gt;&lt;h5 id="说明-5"&gt;&lt;a class="link" href="#2-6-1" &gt;说明&lt;/a&gt;
&lt;/h5&gt;
 &lt;blockquote&gt;
 &lt;p&gt;bool Memcache::replace ( string $key , mixed $var [, int $flag [, int $expire ]] )
替换一个指定 已存在key 的的缓存变量内容&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h5 id="参数-4"&gt;&lt;a class="link" href="#2-6-2" &gt;参数&lt;/a&gt;
&lt;/h5&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;-&lt;/th&gt;
					&lt;th&gt;-&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;key&lt;/td&gt;
					&lt;td&gt;缓存数据的键， 其长度不能超过250个字符&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;var&lt;/td&gt;
					&lt;td&gt;值，整型将直接存储，其他类型将被序列化存储，其值最大为1M&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;flag&lt;/td&gt;
					&lt;td&gt;是否使用 zlib 压缩 ,当flag=MEMCACHE_COMPRESSED的时侯，数据很小的时候不会采用zlib压缩，只有数据达到一定大小才对数据进行zlib压缩。（没有具体的测试数据进行压缩的最小值是多少）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;expire&lt;/td&gt;
					&lt;td&gt;过期时间，0 为永不过期，可使用 unix 时间戳格式或距离当前时间的秒数，设为秒数时不能大于 2592000（30 天）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="返回值-5"&gt;&lt;a class="link" href="#2-6-3" &gt;返回值&lt;/a&gt;
&lt;/h5&gt;&lt;p&gt;成功返回 TRUE，失败返回 FALSE。&lt;/p&gt;
&lt;h5 id="范例-5"&gt;&lt;a class="link" href="#2-6-4" &gt;范例&lt;/a&gt;
&lt;/h5&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;php&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;memcache_connect&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* procedural API */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;memcache_replace&lt;/span&gt;($memcache_obj, &lt;span style="color:#e6db74"&gt;&amp;#34;test_key&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;some variable&amp;#34;&lt;/span&gt;, &lt;span style="color:#66d9ef"&gt;FALSE&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;30&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* OO API */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;replace&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;test_key&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;some variable&amp;#34;&lt;/span&gt;, &lt;span style="color:#66d9ef"&gt;FALSE&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;30&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;?&amp;gt;&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="memcacheset"&gt;&lt;a class="link" href="#2-7" &gt;Memcache::set&lt;/a&gt;
&lt;/h4&gt;&lt;h5 id="说明-6"&gt;&lt;a class="link" href="#2-7-1" &gt;说明&lt;/a&gt;
&lt;/h5&gt;
 &lt;blockquote&gt;
 &lt;p&gt;bool Memcache::set ( string $key , mixed $var [, int $flag [, int $expire ]] )
设置一个指定 key 的缓存变量内容&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h5 id="参数-5"&gt;&lt;a class="link" href="#2-7-2" &gt;参数&lt;/a&gt;
&lt;/h5&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;-&lt;/th&gt;
					&lt;th&gt;-&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;key&lt;/td&gt;
					&lt;td&gt;缓存数据的键， 其长度不能超过250个字符&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;var&lt;/td&gt;
					&lt;td&gt;值，整型将直接存储，其他类型将被序列化存储，其值最大为1M&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;flag&lt;/td&gt;
					&lt;td&gt;是否使用 zlib 压缩 ,当flag=MEMCACHE_COMPRESSED的时侯，数据很小的时候不会采用zlib压缩，只有数据达到一定大小才对数据进行zlib压缩。（没有具体的测试数据进行压缩的最小值是多少）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;expire&lt;/td&gt;
					&lt;td&gt;过期时间，0 为永不过期，可使用 unix 时间戳格式或距离当前时间的秒数，设为秒数时不能大于 2592000（30 天）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="返回值-6"&gt;&lt;a class="link" href="#2-7-3" &gt;返回值&lt;/a&gt;
&lt;/h5&gt;&lt;p&gt;成功返回 TRUE，失败返回 FALSE。&lt;/p&gt;
&lt;h5 id="范例-6"&gt;&lt;a class="link" href="#2-7-4" &gt;范例&lt;/a&gt;
&lt;/h5&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;php&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* procedural API */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* connect to memcached server */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;memcache_connect&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/*
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;set value of item with key ‘var_key‘
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;using 0 as flag value, compression is not used
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;expire time is 30 second
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;*/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;memcache_set&lt;/span&gt;($memcache_obj, &lt;span style="color:#a6e22e"&gt;‘var_key‘&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;‘some&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;variable‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;30&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;echo&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;memcache_get&lt;/span&gt;($memcache_obj, &lt;span style="color:#a6e22e"&gt;‘var_key‘&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;?&amp;gt;&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;php&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* OO API */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Memcache&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* connect to memcached server */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;connect&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/*
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;set value of item with key ‘var_key‘, using on-the-fly compression
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;expire time is 50 seconds
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;*/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;set&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘var_key‘&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;‘some&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;really&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;big&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;variable‘&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;MEMCACHE_COMPRESSED&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;50&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;echo&lt;/span&gt; $memcache_obj&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;get&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘var_key‘&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;?&amp;gt;&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="memcacheget"&gt;&lt;a class="link" href="#2-8" &gt;Memcache::get&lt;/a&gt;
&lt;/h4&gt;&lt;h5 id="说明-7"&gt;&lt;a class="link" href="#2-8-1" &gt;说明&lt;/a&gt;
&lt;/h5&gt;
 &lt;blockquote&gt;
 &lt;p&gt;string Memcache::get ( string $key [, int &amp;amp;$flags ] )
array Memcache::get ( array $keys [, array &amp;amp;$flags ] )获取某个 key 的变量缓存值&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h5 id="参数-6"&gt;&lt;a class="link" href="#2-8-2" &gt;参数&lt;/a&gt;
&lt;/h5&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;-&lt;/th&gt;
					&lt;th&gt;-&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;key&lt;/td&gt;
					&lt;td&gt;缓存值的键&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;flags&lt;/td&gt;
					&lt;td&gt;如果是传址某个变量，获取缓存值被set或是add的flag结果将被存于该变量&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="返回值-7"&gt;&lt;a class="link" href="#2-8-3" &gt;返回值&lt;/a&gt;
&lt;/h5&gt;&lt;p&gt;返回缓存的指定 key 的变量内容或者是在失败或该变量的值不存在时返回 FALSE
如果传出的key的数组中的key都不存在，返回的结果是一个空数组，反之则返回key与缓存值相关联的关联数组&lt;/p&gt;
&lt;h5 id="范例-7"&gt;&lt;a class="link" href="#2-8-4" &gt;范例&lt;/a&gt;
&lt;/h5&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;php&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* procedural API */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;memcache_connect&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$var &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;memcache_get&lt;/span&gt;($memcache_obj, &lt;span style="color:#a6e22e"&gt;‘some_key‘&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* OO API */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Memcache&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;connect&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$var &lt;span style="color:#f92672"&gt;=&lt;/span&gt; $memcache_obj&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;get&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘some_key‘&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/*
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;You also can use array of keys as a parameter.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;If such item wasn‘t found at the server, the result
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;array simply will not include such key.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;*/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* procedural API */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;memcache_connect&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$var &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;memcache_get&lt;/span&gt;($memcache_obj, &lt;span style="color:#66d9ef"&gt;Array&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘some_key‘&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;‘another_key‘&lt;/span&gt;));
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;//如果some_key，another_key不存在 $var = array();
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;//如果some_key，another_key存在 $var = array(‘some_key‘=&amp;gt;‘缓存值‘, ‘another_key‘=&amp;gt;‘缓存值‘);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* OO API */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Memcache&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;connect&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$var &lt;span style="color:#f92672"&gt;=&lt;/span&gt; $memcache_obj&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;get&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;Array&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘some_key‘&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;‘second_key‘&lt;/span&gt;));
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;?&amp;gt;&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="memcachedelete"&gt;&lt;a class="link" href="#2-9" &gt;Memcache::delete&lt;/a&gt;
&lt;/h4&gt;&lt;h5 id="说明-8"&gt;&lt;a class="link" href="#2-9-1" &gt;说明&lt;/a&gt;
&lt;/h5&gt;
 &lt;blockquote&gt;
 &lt;p&gt;bool Memcache::delete ( string $key [, int $timeout ] )&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;删除某一个变量的缓存&lt;/p&gt;
&lt;h5 id="参数-7"&gt;&lt;a class="link" href="#2-9-2" &gt;参数&lt;/a&gt;
&lt;/h5&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;-&lt;/th&gt;
					&lt;th&gt;-&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;key&lt;/td&gt;
					&lt;td&gt;缓存的键 键值不能为null和‘’，当它等于前面两个值的时候php会有警告错误。&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;timeout&lt;/td&gt;
					&lt;td&gt;删除这项的时间，如果它等于0，这项将被立刻删除反之如果它等于30秒，那么这项被删除在30秒内&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="返回值-8"&gt;&lt;a class="link" href="#2-9-3" &gt;返回值&lt;/a&gt;
&lt;/h5&gt;&lt;p&gt;成功返回 TRUE，失败返回 FALSE。&lt;/p&gt;
&lt;h5 id="范例-8"&gt;&lt;a class="link" href="#2-9-4" &gt;范例&lt;/a&gt;
&lt;/h5&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;php&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* procedural API */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;memcache_connect&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* after 10 seconds item will be deleted by the server */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;memcache_delete&lt;/span&gt;($memcache_obj, &lt;span style="color:#a6e22e"&gt;‘key_to_delete‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* OO API */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Memcache&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;connect&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;delete&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘key_to_delete‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;?&amp;gt;&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="memcacheflush"&gt;&lt;a class="link" href="#2-10" &gt;Memcache::flush&lt;/a&gt;
&lt;/h4&gt;&lt;h5 id="说明-9"&gt;&lt;a class="link" href="#2-10-1" &gt;说明&lt;/a&gt;
&lt;/h5&gt;
 &lt;blockquote&gt;
 &lt;p&gt;bool Memcache::flush ( void )&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;清空所有缓存内容，不是真的删除缓存的内容，只是使所有变量的缓存过期，使内存中的内容被重写&lt;/p&gt;
&lt;h5 id="返回值-9"&gt;&lt;a class="link" href="#2-10-2" &gt;返回值&lt;/a&gt;
&lt;/h5&gt;&lt;p&gt;成功返回 TRUE，失败返回 FALSE。&lt;/p&gt;
&lt;h5 id="范例-9"&gt;&lt;a class="link" href="#2-10-3" &gt;范例&lt;/a&gt;
&lt;/h5&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;php&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* procedural API */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;memcache_connect&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;memcache_flush&lt;/span&gt;($memcache_obj);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* OO API */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Memcache&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;connect&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;flush&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;?&amp;gt;&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="memcachegetextendedstats"&gt;&lt;a class="link" href="#2-11" &gt;Memcache::getExtendedStats&lt;/a&gt;
&lt;/h4&gt;&lt;h5 id="说明-10"&gt;&lt;a class="link" href="#2-11-1" &gt;说明&lt;/a&gt;
&lt;/h5&gt;
 &lt;blockquote&gt;
 &lt;p&gt;array Memcache::getExtendedStats ([ string $type [, int $slabid [, int $limit ]]] )&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;获取所有服务器扩展静态信息&lt;/p&gt;
&lt;h5 id="参数-8"&gt;&lt;a class="link" href="#2-11-2" &gt;参数&lt;/a&gt;
&lt;/h5&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;-&lt;/th&gt;
					&lt;th&gt;-&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;type&lt;/td&gt;
					&lt;td&gt;静态信息类型，有效值包括{reset, malloc, maps, cachedump, slabs, items, sizes}，依照一定规则协议这个可选参数是为了方便开发人员查看不同类别的信息而输入的标题&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;slabid&lt;/td&gt;
					&lt;td&gt;用于按指定类型联合设置 cache 堆为有效的片到堆中。缓存堆被被命令绑定到服务器上并被严格的用于调试用途&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;limit&lt;/td&gt;
					&lt;td&gt;用于按指定类型联合设置 cache 堆为输入的数字所限制的大小到堆，默认值为 100&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="返回值-10"&gt;&lt;a class="link" href="#2-11-3" &gt;返回值&lt;/a&gt;
&lt;/h5&gt;&lt;p&gt;返回一个由服务器扩展静态信息二维数组，失败时返回 FALSE&lt;/p&gt;
&lt;h5 id="范例-10"&gt;&lt;a class="link" href="#2-11-4" &gt;范例&lt;/a&gt;
&lt;/h5&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;php&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Memcache&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;addServer&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;addServer&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘failed_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$stats &lt;span style="color:#f92672"&gt;=&lt;/span&gt; $memcache_obj&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;getExtendedStats&lt;/span&gt;(); 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;print_r&lt;/span&gt;($stats);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;?&amp;gt;&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;输出结果&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Array&lt;span style="color:#f92672"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;memcache_host:11211&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt;&amp;gt; Array&lt;span style="color:#f92672"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;pid&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt;&amp;gt; &lt;span style="color:#ae81ff"&gt;3756&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;uptime&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt;&amp;gt; &lt;span style="color:#ae81ff"&gt;603011&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;time&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt;&amp;gt; &lt;span style="color:#ae81ff"&gt;1133810435&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;version&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt;&amp;gt; 1.1.12
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;rusage_user&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt;&amp;gt; 0.451931
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;rusage_system&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt;&amp;gt; 0.634903
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;curr_items&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt;&amp;gt; &lt;span style="color:#ae81ff"&gt;2483&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;total_items&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt;&amp;gt; &lt;span style="color:#ae81ff"&gt;3079&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;bytes&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt;&amp;gt; &lt;span style="color:#ae81ff"&gt;2718136&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;curr_connections&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt;&amp;gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;total_connections&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt;&amp;gt; &lt;span style="color:#ae81ff"&gt;807&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;connection_structures&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt;&amp;gt; &lt;span style="color:#ae81ff"&gt;13&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;cmd_get&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt;&amp;gt; &lt;span style="color:#ae81ff"&gt;9748&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;cmd_set&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt;&amp;gt; &lt;span style="color:#ae81ff"&gt;3096&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;get_hits&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt;&amp;gt; &lt;span style="color:#ae81ff"&gt;5976&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;get_misses&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt;&amp;gt; &lt;span style="color:#ae81ff"&gt;3772&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;bytes_read&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt;&amp;gt; &lt;span style="color:#ae81ff"&gt;3448968&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;bytes_written&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt;&amp;gt; &lt;span style="color:#ae81ff"&gt;2318883&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;limit_maxbytes&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt;&amp;gt; &lt;span style="color:#ae81ff"&gt;33554432&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;)&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;failed_host:11211&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="memcachegetstats"&gt;&lt;a class="link" href="#2-12" &gt;Memcache::getStats&lt;/a&gt;
&lt;/h4&gt;&lt;h5 id="说明-11"&gt;&lt;a class="link" href="#2-12-1" &gt;说明&lt;/a&gt;
&lt;/h5&gt;
 &lt;blockquote&gt;
 &lt;p&gt;array Memcache::getStats ([ string $type [, int $slabid [, int $limit ]]] )&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;获取最后添加服务器静态信息&lt;/p&gt;
&lt;h5 id="参数-9"&gt;&lt;a class="link" href="#2-12-2" &gt;参数&lt;/a&gt;
&lt;/h5&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;-&lt;/th&gt;
					&lt;th&gt;-&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;type&lt;/td&gt;
					&lt;td&gt;静态信息类型，有效值包括{reset, malloc, maps, cachedump, slabs, items, sizes}，依照一定规则协议这个可选参数是为了方便开发人员查看不同类别的信息而输入的标题&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;slabid&lt;/td&gt;
					&lt;td&gt;用于按指定类型联合设置 cache 堆为有效的片到堆中。缓存堆被被命令绑定到服务器上并被严格的用于调试用途&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;limit&lt;/td&gt;
					&lt;td&gt;用于按指定类型联合设置 cache 堆为输入的数字所限制的大小到堆，默认值为 100&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="返回值-11"&gt;&lt;a class="link" href="#2-12-3" &gt;返回值&lt;/a&gt;
&lt;/h5&gt;&lt;p&gt;返回一个服务器静态信息数组，失败时返回 FALSE&lt;/p&gt;
&lt;h4 id="memcachegetserverstatus"&gt;&lt;a class="link" href="#2-13" &gt;Memcache::getServerStatus&lt;/a&gt;
&lt;/h4&gt;&lt;h5 id="说明-12"&gt;&lt;a class="link" href="#2-13-1" &gt;说明&lt;/a&gt;
&lt;/h5&gt;
 &lt;blockquote&gt;
 &lt;p&gt;int Memcache::getServerStatus ( string $host [, int $port ] )&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;通过输入的 host 及 port 来获取相应的服务器信息&lt;/p&gt;
&lt;h5 id="参数-10"&gt;&lt;a class="link" href="#2-13-2" &gt;参数&lt;/a&gt;
&lt;/h5&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;-&lt;/th&gt;
					&lt;th&gt;-&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;host&lt;/td&gt;
					&lt;td&gt;服务器域名或 IP&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;port&lt;/td&gt;
					&lt;td&gt;端口号，默认为 11211&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="返回值-12"&gt;&lt;a class="link" href="#2-13-3" &gt;返回值&lt;/a&gt;
&lt;/h5&gt;&lt;p&gt;返回服务器状态，0 为失败，其他情况返回非 0 数字&lt;/p&gt;
&lt;h5 id="范例-11"&gt;&lt;a class="link" href="#2-13-4" &gt;范例&lt;/a&gt;
&lt;/h5&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;php&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* OO API */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Memcache&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;addServer&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;echo&lt;/span&gt; $memcache&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;getServerStatus&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* procedural API */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;memcache_connect&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;echo&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;memcache_get_server_status&lt;/span&gt;($memcache, &lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;?&amp;gt;&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="memcachegetversion"&gt;&lt;a class="link" href="#2-14" &gt;Memcache::getVersion&lt;/a&gt;
&lt;/h4&gt;&lt;h5 id="说明-13"&gt;&lt;a class="link" href="#2-14-1" &gt;说明&lt;/a&gt;
&lt;/h5&gt;
 &lt;blockquote&gt;
 &lt;p&gt;string Memcache::getVersion ( void )&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;获取服务器的版本号信息&lt;/p&gt;
&lt;h5 id="返回值-13"&gt;&lt;a class="link" href="#2-14-2" &gt;返回值&lt;/a&gt;
&lt;/h5&gt;&lt;p&gt;成功返回服务器的版本号字符串，失败返回 FALSE&lt;/p&gt;
&lt;h5 id="范例-12"&gt;&lt;a class="link" href="#2-14-3" &gt;范例&lt;/a&gt;
&lt;/h5&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;php&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* OO API */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Memcache&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;connect&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;echo&lt;/span&gt; $memcache&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;getVersion&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* procedural API */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;memcache_connect&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;echo&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;memcache_get_version&lt;/span&gt;($memcache);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;?&amp;gt;&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="memcachesetcompressthreshold"&gt;&lt;a class="link" href="#2-15" &gt;Memcache::setCompressThreshold&lt;/a&gt;
&lt;/h4&gt;
 &lt;blockquote&gt;
 &lt;p&gt;bool Memcache::setCompressThreshold ( int $threshold [, float $min_savings ] )设置压缩极限&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h5 id="参数-11"&gt;&lt;a class="link" href="#2-15-1" &gt;参数&lt;/a&gt;
&lt;/h5&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;-&lt;/th&gt;
					&lt;th&gt;-&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;threshold&lt;/td&gt;
					&lt;td&gt;设置控制自动压缩的变量长度的最小值&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;min_saving&lt;/td&gt;
					&lt;td&gt;指定的最低压缩比率，值必须介于 0 - 1 之间，默认为 0.2 代表 20% 的压缩比率&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="返回值-14"&gt;&lt;a class="link" href="#2-15-2" &gt;返回值&lt;/a&gt;
&lt;/h5&gt;&lt;p&gt;成功返回 TRUE，失败返回 FALSE。&lt;/p&gt;
&lt;h5 id="范例-13"&gt;&lt;a class="link" href="#2-15-3" &gt;范例&lt;/a&gt;
&lt;/h5&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;php&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* OO API */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Memcache&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;addServer&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;setCompressThreshold&lt;/span&gt;(&lt;span style="color:#ae81ff"&gt;20000&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;0.2&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* procedural API */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;memcache_connect&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;memcache_set_compress_threshold&lt;/span&gt;($memcache_obj, &lt;span style="color:#ae81ff"&gt;20000&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;0.2&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;?&amp;gt;&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="memcachesetserverparams"&gt;&lt;a class="link" href="#2-16" &gt;Memcache::setServerParams&lt;/a&gt;
&lt;/h4&gt;&lt;h5 id="说明-14"&gt;&lt;a class="link" href="#2-16-1" &gt;说明&lt;/a&gt;
&lt;/h5&gt;
 &lt;blockquote&gt;
 &lt;p&gt;bool Memcache::setServerParams ( string $host [, int $port [, int $timeout [, int $retry_interval [, bool $status [, callback $failure_callback ]]]]] )
Memcache version 2.1.0 后增加的函数，运行时设置服务器参数&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h5 id="参数-12"&gt;&lt;a class="link" href="#2-16-2" &gt;参数&lt;/a&gt;
&lt;/h5&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;-&lt;/th&gt;
					&lt;th&gt;-&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;host&lt;/td&gt;
					&lt;td&gt;服务器域名或 IP&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;port&lt;/td&gt;
					&lt;td&gt;端口号，默认为 11211&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;timeout&lt;/td&gt;
					&lt;td&gt;超时连接失效的秒数，修改默认值 1 时要三思，有可能失去所有缓存方面的优势导致连接变得很慢&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;retry_interval&lt;/td&gt;
					&lt;td&gt;服务器连接失败时的重试频率，默认是 15 秒一次，如果设置为 -1 将禁止自动重试，当扩展中加载了 dynamically via dl() 时，无论本参数还是常连接设置参数都会失效。 每一个失败的服务器在失效前都有独自的生存期，选择后端请求时会被跳过而不服务于请求。一个过期的连接将成功的重新连接或者被标记为失败的连接等待下一次 重试。这种效果就是说每一个 web server 的子进程在服务于页面时的重试连接都跟他们自己的重试频率有关。&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;status&lt;/td&gt;
					&lt;td&gt;控制服务器是否被标记为 online，设置这个参数为 FALSE 并设置 retry_interval 为 -1 可以使连接失败的服务器被放到一个描述不响应请求的服务器池子中，对这个服务器的请求将失败，接受设置为失败服务器的设置，默认参数为 TRUE，代表该服务器可以被定义为 online。&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;failure_callback&lt;/td&gt;
					&lt;td&gt;失败时的回调函数，函数的两个参数为失败服务器的 hostname 和 port&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="返回值-15"&gt;&lt;a class="link" href="#2-16-3" &gt;返回值&lt;/a&gt;
&lt;/h5&gt;&lt;p&gt;成功返回 TRUE，失败返回 FALSE。&lt;/p&gt;
&lt;h5 id="范例-14"&gt;&lt;a class="link" href="#2-16-4" &gt;范例&lt;/a&gt;
&lt;/h5&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;php&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;function&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;_callback_memcache_failure&lt;/span&gt;($host, $port){
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;print&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;memcache ‘&lt;/span&gt;&lt;span style="color:#e6db74"&gt;$host&lt;/span&gt;&lt;span style="color:#e6db74"&gt;:&lt;/span&gt;&lt;span style="color:#e6db74"&gt;$port‘&lt;/span&gt;&lt;span style="color:#e6db74"&gt; failed&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* OO API */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Memcache&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// Add the server in offline mode
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;addServer&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;, &lt;span style="color:#66d9ef"&gt;FALSE&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#66d9ef"&gt;FALSE&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// Bring the server back online
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;setServerParams&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;15&lt;/span&gt;, &lt;span style="color:#66d9ef"&gt;TRUE&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;‘_callback_memcache_failure‘&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* procedural API */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;memcache_connect&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;memcache_set_server_params&lt;/span&gt;($memcache_obj, &lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;15&lt;/span&gt;, &lt;span style="color:#66d9ef"&gt;TRUE&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;‘_callback_memcache_failure‘&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;?&amp;gt;&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="memcacheincrement"&gt;&lt;a class="link" href="#2-17" &gt;Memcache::increment&lt;/a&gt;
&lt;/h4&gt;&lt;h5 id="说明-15"&gt;&lt;a class="link" href="#2-17-1" &gt;说明&lt;/a&gt;
&lt;/h5&gt;
 &lt;blockquote&gt;
 &lt;p&gt;int Memcache::increment ( string $key [, int $value ] )
给指定 key 的缓存变量一个增值，如果该变量不是数字时不会被转化为数字，这个增值将会加到该变量原有的数字之上，变量不存在不会新增变量，对于压缩存储的变量不要使用本函数因为相应的取值方法会失败。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h5 id="参数-13"&gt;&lt;a class="link" href="#2-17-2" &gt;参数&lt;/a&gt;
&lt;/h5&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;-&lt;/th&gt;
					&lt;th&gt;-&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;key&lt;/td&gt;
					&lt;td&gt;缓存值的键&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;value&lt;/td&gt;
					&lt;td&gt;值，整型将直接存储，其他类型将被序列化存储&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="返回值-16"&gt;&lt;a class="link" href="#2-17-3" &gt;返回值&lt;/a&gt;
&lt;/h5&gt;&lt;p&gt;成功返回新的变量值，失败返回 FALSE。&lt;/p&gt;
&lt;h5 id="范例-15"&gt;&lt;a class="link" href="#2-17-4" &gt;范例&lt;/a&gt;
&lt;/h5&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;php&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* procedural API */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;memcache_connect&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* increment counter by 2 */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$current_value &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;memcache_increment&lt;/span&gt;($memcache_obj, &lt;span style="color:#a6e22e"&gt;‘counter‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* OO API */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Memcache&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;connect&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* increment counter by 3 */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$current_value &lt;span style="color:#f92672"&gt;=&lt;/span&gt; $memcache_obj&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;increment&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘counter‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;?&amp;gt;&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="memcachedecrement"&gt;&lt;a class="link" href="#2-18" &gt;Memcache::decrement&lt;/a&gt;
&lt;/h4&gt;&lt;h5 id="说明-16"&gt;&lt;a class="link" href="#2-18-1" &gt;说明&lt;/a&gt;
&lt;/h5&gt;
 &lt;blockquote&gt;
 &lt;p&gt;int Memcache::decrement ( string $key [, int $value ] )
给指定 key 的缓存变量一个递减值，与 increment 操作类似，将在原有变量基础上减去这个值，该项的值将会在转化为数字后减去，新项的值不会小于 0，对于压缩存储的变量不要使用本函数因为相应的取值方法会失败。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h5 id="参数-14"&gt;&lt;a class="link" href="#2-18-2" &gt;参数&lt;/a&gt;
&lt;/h5&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;-&lt;/th&gt;
					&lt;th&gt;-&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;key&lt;/td&gt;
					&lt;td&gt;缓存值的键&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;value&lt;/td&gt;
					&lt;td&gt;值，整型将直接存储，其他类型将被序列化存储&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="返回值-17"&gt;&lt;a class="link" href="#2-18-3" &gt;返回值&lt;/a&gt;
&lt;/h5&gt;&lt;p&gt;成功返回新的变量值，失败返回 FALSE。&lt;/p&gt;
&lt;h5 id="范例-16"&gt;&lt;a class="link" href="#2-18-4" &gt;范例&lt;/a&gt;
&lt;/h5&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;php&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* procedural API */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;memcache_connect&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* decrement item by 2 */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$new_value &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;memcache_decrement&lt;/span&gt;($memcache_obj, &lt;span style="color:#a6e22e"&gt;‘test_item‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* OO API */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Memcache&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcache_obj&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;connect&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘memcache_host‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* decrement item by 3 */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$new_value &lt;span style="color:#f92672"&gt;=&lt;/span&gt; $memcache_obj&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;decrement&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;‘test_item‘&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;?&amp;gt;&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="memcache_"&gt;&lt;a class="link" href="#2-19" &gt;memcache_debug&lt;/a&gt;
&lt;/h4&gt;&lt;h5 id="说明-17"&gt;&lt;a class="link" href="#2-19-1" &gt;说明&lt;/a&gt;
&lt;/h5&gt;
 &lt;blockquote&gt;
 &lt;p&gt;bool memcache_debug ( bool $on_off )&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;设置 memcache 的调试器是否开启，值为 TRUE 或 FALSE。 受影响于 php 安装时是否使用了 &amp;ndash;enable-debug 选项，如果使用了该函数才会返回 TRUE，其他情况将始终返回 FALSE。&lt;/p&gt;
&lt;h5 id="参数-15"&gt;&lt;a class="link" href="#2-19-2" &gt;参数&lt;/a&gt;
&lt;/h5&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;-&lt;/th&gt;
					&lt;th&gt;-&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;on_off&lt;/td&gt;
					&lt;td&gt;设置调试模式是否开启，TRUE 为开启，FALSE 为关闭&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id="返回值-18"&gt;&lt;a class="link" href="#2-19-3" &gt;返回值&lt;/a&gt;
&lt;/h5&gt;&lt;p&gt;php 安装时如果使使用了 &amp;ndash;enable-debug 选项返回 TRUE，否则将返回 FALSE。&lt;/p&gt;
&lt;p&gt;参考资料来源：http://www.cnblogs.com/qiantuwuliang/archive/2011/03/07/1974499.html&lt;/p&gt;</description></item><item><title>Memcache的客户端连接</title><link>https://zhangdapeng.dev/p/memcache-de-ke-hu-duan-lian-jie/</link><pubDate>Mon, 09 Jun 2025 16:30:09 +0000</pubDate><guid>https://zhangdapeng.dev/p/memcache-de-ke-hu-duan-lian-jie/</guid><description>&lt;p&gt;许多语言都实现了连接memcached的客户端，其中以Perl、PHP为主。 仅仅memcached网站上列出的语言就有&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Perl&lt;/li&gt;
&lt;li&gt;PHP&lt;/li&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;Ruby&lt;/li&gt;
&lt;li&gt;C#&lt;/li&gt;
&lt;li&gt;C/C++&lt;/li&gt;
&lt;li&gt;Lua&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;等等。&lt;/p&gt;
&lt;p&gt;memcached客户端API：http://www.danga.com/memcached/apis.bml
这里介绍通过mixi正在使用的Perl库链接memcached的方法。&lt;/p&gt;
&lt;h3 id="使用cachememcached"&gt;&lt;a class="link" href="#1" &gt;使用Cache::Memcached&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Perl的memcached客户端有&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cache::Memcached&lt;/li&gt;
&lt;li&gt;Cache::Memcached::Fast&lt;/li&gt;
&lt;li&gt;Cache::Memcached::libmemcached&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;等几个CPAN模块。这里介绍的Cache::Memcached是memcached的作者Brad Fitzpatric的作品， 应该算是memcached的客户端中应用最为广泛的模块了。&lt;/p&gt;
&lt;p&gt;Cache::Memcached – search.cpan.org: &lt;a class="link" href="http://search.cpan.org/dist/Cache-Memcached/" target="_blank" rel="noopener"
 &gt;http://search.cpan.org/dist/Cache-Memcached/&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="使用cachememcached连接memcached"&gt;&lt;a class="link" href="#2" &gt;使用Cache::Memcached连接memcached&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;下面的源代码为通过Cache::Memcached连接刚才启动的memcached的例子。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-perl" data-lang="perl"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#!/usr/bin/perl&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;use&lt;/span&gt; strict;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;use&lt;/span&gt; warnings;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;use&lt;/span&gt; Cache::Memcached;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;my&lt;/span&gt; $key &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;foo&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;my&lt;/span&gt; $value &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;bar&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;my&lt;/span&gt; $expires &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;3600&lt;/span&gt;; &lt;span style="color:#75715e"&gt;# 1 hour&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;my&lt;/span&gt; $memcached &lt;span style="color:#f92672"&gt;=&lt;/span&gt; Cache::Memcached&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;new&lt;/span&gt;({
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; servers &lt;span style="color:#f92672"&gt;=&amp;gt;&lt;/span&gt; [&lt;span style="color:#e6db74"&gt;&amp;#34;127.0.0.1:11211&amp;#34;&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; compress_threshold &lt;span style="color:#f92672"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;10_000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;});
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcached&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;add($key, $value, $expires);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;my&lt;/span&gt; $ret &lt;span style="color:#f92672"&gt;=&lt;/span&gt; $memcached&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;get($key);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;print&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;$ret\n&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;在这里，为Cache::Memcached指定了memcached服务器的IP地址和一个选项，以生成实例。 Cache::Memcached常用的选项如下所示。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;选项&lt;/th&gt;
					&lt;th&gt;说明&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;servers&lt;/td&gt;
					&lt;td&gt;用数组指定memcached服务器和端口&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;compress_threshold&lt;/td&gt;
					&lt;td&gt;数据压缩时使用的值&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;namespace&lt;/td&gt;
					&lt;td&gt;指定添加到键的前缀&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;另外，Cache::Memcached通过Storable模块可以将Perl的复杂数据序列化之后再保存， 因此散列、数组、对象等都可以直接保存到memcached中。&lt;/p&gt;
&lt;h3 id="保存数据"&gt;&lt;a class="link" href="#3" &gt;保存数据&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;向memcached保存数据的方法有&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;add&lt;/li&gt;
&lt;li&gt;replace&lt;/li&gt;
&lt;li&gt;set&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它们的使用方法都相同：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-perl" data-lang="perl"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;my&lt;/span&gt; $add &lt;span style="color:#f92672"&gt;=&lt;/span&gt; $memcached&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;add( &lt;span style="color:#e6db74"&gt;&amp;#39;键&amp;#39;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;值&amp;#39;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;期限&amp;#39;&lt;/span&gt; );
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;my&lt;/span&gt; $replace &lt;span style="color:#f92672"&gt;=&lt;/span&gt; $memcached&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;replace( &lt;span style="color:#e6db74"&gt;&amp;#39;键&amp;#39;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;值&amp;#39;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;期限&amp;#39;&lt;/span&gt; );
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;my&lt;/span&gt; $set &lt;span style="color:#f92672"&gt;=&lt;/span&gt; $memcached&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;set( &lt;span style="color:#e6db74"&gt;&amp;#39;键&amp;#39;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;值&amp;#39;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;期限&amp;#39;&lt;/span&gt; );
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;my&lt;/span&gt; $val &lt;span style="color:#f92672"&gt;=&lt;/span&gt; $memcached&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;get(&lt;span style="color:#e6db74"&gt;&amp;#39;键&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;my&lt;/span&gt; $val &lt;span style="color:#f92672"&gt;=&lt;/span&gt; $memcached&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;get_multi(&lt;span style="color:#e6db74"&gt;&amp;#39;键1&amp;#39;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;键2&amp;#39;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;键3&amp;#39;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;键4&amp;#39;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;键5&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;一次取得多条数据时使用getmulti。getmulti可以非同步地同时取得多个键值， 其速度要比循环调用get快数十倍。&lt;/p&gt;
&lt;h3 id="删除数据"&gt;&lt;a class="link" href="#4" &gt;删除数据&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;删除数据使用delete方法，不过它有个独特的功能。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-perl" data-lang="perl"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcached&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;delete(&lt;span style="color:#e6db74"&gt;&amp;#39;键&amp;#39;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;阻塞时间(秒)&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;删除第一个参数指定的键的数据。第二个参数指定一个时间值，可以禁止使用同样的键保存新数据。 此功能可以用于防止缓存数据的不完整。但是要注意，set函数忽视该阻塞，照常保存数据&lt;/p&gt;
&lt;h3 id="增一和减一操作"&gt;&lt;a class="link" href="#5" &gt;增一和减一操作&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;可以将memcached上特定的键值作为计数器使用。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-perl" data-lang="perl"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;my&lt;/span&gt; $ret &lt;span style="color:#f92672"&gt;=&lt;/span&gt; $memcached&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;incr(&lt;span style="color:#e6db74"&gt;&amp;#39;键&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$memcached&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;add(&lt;span style="color:#e6db74"&gt;&amp;#39;键&amp;#39;&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;unless&lt;/span&gt; defined $ret;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;增一和减一是原子操作，但未设置初始值时，不会自动赋成0。因此， 应当进行错误检查，必要时加入初始化操作。而且，服务器端也不会对 超过2 SUP(32)时的行为进行检查。&lt;/p&gt;</description></item><item><title>Memcache基础介绍</title><link>https://zhangdapeng.dev/p/memcache-ji-chu-jie-shao/</link><pubDate>Mon, 09 Jun 2025 16:22:04 +0000</pubDate><guid>https://zhangdapeng.dev/p/memcache-ji-chu-jie-shao/</guid><description>&lt;p&gt;memcached 是以LiveJournal 旗下Danga Interactive 公司的Brad Fitzpatric 为首开发的一款软件。现在已成为 mixi、 hatena、 Facebook、 Vox、LiveJournal等众多服务中 提高Web应用扩展性的重要因素。&lt;/p&gt;
&lt;p&gt;许多Web应用都将数据保存到RDBMS中，应用服务器从中读取数据并在浏览器中显示。 但随着数据量的增大、访问的集中，就会出现RDBMS的负担加重、数据库响应恶化、 网站显示延迟等重大影响。&lt;/p&gt;
&lt;p&gt;这时就该memcached大显身手了。memcached是高性能的分布式内存缓存服务器。 一般的使用目的是，通过缓存数据库查询结果，减少数据库访问次数，以提高动态Web应用的速度、 提高可扩展性。&lt;/p&gt;
&lt;h3 id="memcached的特征"&gt;&lt;a class="link" href="#1" &gt;memcached的特征&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;memcached作为高速运行的分布式缓存服务器，具有以下的特点。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;协议简单&lt;/li&gt;
&lt;li&gt;基于libevent的事件处理&lt;/li&gt;
&lt;li&gt;内置内存存储方式&lt;/li&gt;
&lt;li&gt;memcached不互相通信的分布式&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id="协议简单"&gt;&lt;a class="link" href="#11" &gt;协议简单&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;memcached的服务器客户端通信并不使用复杂的XML等格式， 而使用简单的基于文本行的协议。因此，通过telnet 也能在memcached上保存数据、取得数据。下面是例子。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ telnet localhost &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Trying 127.0.0.1...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Connected to localhost.localdomain &lt;span style="color:#f92672"&gt;(&lt;/span&gt;127.0.0.1&lt;span style="color:#f92672"&gt;)&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Escape character is &lt;span style="color:#e6db74"&gt;&amp;#39;^]&amp;#39;&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;set foo &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt; （保存命令）
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;bar （数据）
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;STORED （结果）
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;get foo （取得命令）
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;VALUE foo &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt; （数据）
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;bar （数据）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;协议文档位于memcached的源代码内，也可以参考以下的URL。&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt" target="_blank" rel="noopener"
 &gt;http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt&lt;/a&gt;&lt;/p&gt;
&lt;h4 id="基于libevent的事件处理"&gt;&lt;a class="link" href="#12" &gt;基于libevent的事件处理&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;libevent是个程序库，它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能 封装成统一的接口。即使对服务器的连接数增加，也能发挥O(1)的性能。 memcached使用这个libevent库，因此能在Linux、BSD、Solaris等操作系统上发挥其高性能。 可以参考Dan Kegel的The C10K Problem。&lt;/p&gt;
&lt;p&gt;libevent: &lt;a class="link" href="http://www.monkey.org/~provos/libevent/" target="_blank" rel="noopener"
 &gt;http://www.monkey.org/~provos/libevent/&lt;/a&gt;
The C10K Problem: &lt;a class="link" href="http://www.kegel.com/c10k.html" target="_blank" rel="noopener"
 &gt;http://www.kegel.com/c10k.html&lt;/a&gt;&lt;/p&gt;
&lt;h4 id="内置内存存储方式"&gt;&lt;a class="link" href="#13" &gt;内置内存存储方式&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;为了提高性能，memcached中保存的数据都存储在memcached内置的内存存储空间中。 由于数据仅存在于内存中，因此重启memcached、重启操作系统会导致全部数据消失。 另外，内容容量达到指定值之后，就基于LRU(Least Recently Used)算法自动删除不使用的缓存。 memcached本身是为缓存而设计的服务器，因此并没有过多考虑数据的永久性问题。&lt;/p&gt;
&lt;h4 id="memcached不互相通信的分布式"&gt;&lt;a class="link" href="#14" &gt;memcached不互相通信的分布式&lt;/a&gt;
&lt;/h4&gt;&lt;p&gt;memcached尽管是“分布式”缓存服务器，但服务器端并没有分布式功能。 各个memcached不会互相通信以共享信息。那么，怎样进行分布式呢？ 这完全取决于客户端的实现。&lt;/p&gt;
&lt;p&gt;接下来简单介绍一下memcached的使用方法。&lt;/p&gt;
&lt;h3 id="安装memcached"&gt;&lt;a class="link" href="#2" &gt;安装memcached&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;memcached的安装比较简单，这里稍加说明。&lt;/p&gt;
&lt;p&gt;memcached支持许多平台。 * Linux * FreeBSD * Solaris (memcached 1.2.5以上版本) * Mac OS X&lt;/p&gt;
&lt;p&gt;另外也能安装在Windows上。这里使用Fedora Core 8进行说明。&lt;/p&gt;
&lt;p&gt;memcached的安装
运行memcached需要本文开头介绍的libevent库。Fedora 8中有现成的rpm包， 通过yum命令安装即可。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;$ sudo yum install libevent libevent-devel&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;memcached的源代码可以从memcached网站上下载。本文执笔时的最新版本为1.2.5。 Fedora 8虽然也包含了memcached的rpm，但版本比较老。因为源代码安装并不困难， 这里就不使用rpm了。&lt;/p&gt;
&lt;p&gt;下载memcached：http://www.danga.com/memcached/download.bml&lt;/p&gt;
&lt;p&gt;memcached安装与一般应用程序相同，configure、make、make install就行了。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ wget http://www.danga.com/memcached/dist/memcached-1.2.5.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ tar zxf memcached-1.2.5.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ cd memcached-1.2.5
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ ./configure
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ make
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo make install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;默认情况下memcached安装到/usr/local/bin下。&lt;/p&gt;
&lt;h3 id="memcached的启动"&gt;&lt;a class="link" href="#3" &gt;memcached的启动&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;从终端输入以下命令，启动memcached。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ /usr/local/bin/memcached -p &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt; -m 64m -vv
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;slab class 1: chunk size &lt;span style="color:#ae81ff"&gt;88&lt;/span&gt; perslab &lt;span style="color:#ae81ff"&gt;11915&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;slab class 2: chunk size &lt;span style="color:#ae81ff"&gt;112&lt;/span&gt; perslab &lt;span style="color:#ae81ff"&gt;9362&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;slab class 3: chunk size &lt;span style="color:#ae81ff"&gt;144&lt;/span&gt; perslab &lt;span style="color:#ae81ff"&gt;7281&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;中间省略...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;slab class 38: chunk size &lt;span style="color:#ae81ff"&gt;391224&lt;/span&gt; perslab &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;slab class 39: chunk size &lt;span style="color:#ae81ff"&gt;489032&lt;/span&gt; perslab &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#ae81ff"&gt;23&lt;/span&gt; server listening
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#ae81ff"&gt;24&lt;/span&gt; send buffer was 110592, now &lt;span style="color:#ae81ff"&gt;268435456&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#ae81ff"&gt;24&lt;/span&gt; server listening &lt;span style="color:#f92672"&gt;(&lt;/span&gt;udp&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#ae81ff"&gt;24&lt;/span&gt; server listening &lt;span style="color:#f92672"&gt;(&lt;/span&gt;udp&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#ae81ff"&gt;24&lt;/span&gt; server listening &lt;span style="color:#f92672"&gt;(&lt;/span&gt;udp&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#ae81ff"&gt;24&lt;/span&gt; server listening &lt;span style="color:#f92672"&gt;(&lt;/span&gt;udp&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这里显示了调试信息。这样就在前台启动了memcached，监听TCP端口11211 最大内存使用量为64M。&lt;/p&gt;
&lt;p&gt;作为daemon后台启动时，只需&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ /usr/local/bin/memcached -p &lt;span style="color:#ae81ff"&gt;11211&lt;/span&gt; -m 64m -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这里使用的memcached启动选项的内容如下。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;选项 说明
-p 使用的TCP端口。默认为11211
-m 最大内存大小。默认为64M
-vv 用very vrebose模式启动，调试信息和错误输出到控制台
-d 作为daemon在后台启动&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;上面四个是常用的启动选项，其他还有很多，通过&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ /usr/local/bin/memcached -h
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;命令可以显示。许多选项可以改变memcached的各种行为， 推荐读一读。&lt;/p&gt;</description></item></channel></rss>